rem: error (EXIT_FAILURE, errno, _("cannot set priority"));
add: if (!ok) error (errno == EPERM ? 0 : EXIT_FAIL, errno, _("cannot set priority"));
context: main (int argc, char **argv){  int current_priority;  long int adjustment = 0;  int minusflag = 0;  int adjustment_given = 0;  int i;  program_name = argv[0];  setlocale (LC_ALL, "");  bindtextdomain (PACKAGE, LOCALEDIR);  textdomain (PACKAGE);  atexit (close_stdout);  parse_long_options (argc, argv, PROGRAM_NAME, GNU_PACKAGE, VERSION,		      AUTHORS, usage);  for (i = 1; i < argc; /* empty */)    {      char *s = argv[i];      if (s[0] == '-' && s[1] == '-' && ISDIGIT (s[2])	  && posix2_version () < 200112)	{	  if (xstrtol (&s[2], NULL, 10, &adjustment, "") != LONGINT_OK)	    error (EXIT_FAILURE, 0, _("invalid option `%s'"), s);	  minusflag = 1;	  adjustment_given = 1;	  ++i;	}      else if (s[0] == '-'	       && (ISDIGIT (s[1]) || (s[1] == '+' && ISDIGIT (s[2])))	       && posix2_version () < 200112)	{	  if (s[1] == '+')	    ++s;	  if (xstrtol (&s[1], NULL, 10, &adjustment, "") != LONGINT_OK)	    error (EXIT_FAILURE, 0, _("invalid option `%s'"), s);	  minusflag = 0;	  adjustment_given = 1;	  ++i;	}      else	{	  int optc;	  char **fake_argv = argv + i - 1;	  /* Initialize getopt_long's internal state.  */	  optind = 0;	  if ((optc = getopt_long (argc - (i - 1), fake_argv, "+n:",				   longopts, NULL)) != -1)	    {	      switch (optc)		{		case '?':		  usage (EXIT_FAILURE);		case 'n':		  if (xstrtol (optarg, NULL, 10, &adjustment, "")		      != LONGINT_OK)		    error (EXIT_FAILURE, 0, _("invalid priority `%s'"), optarg);		  minusflag = 0;		  adjustment_given = 1;		  break;		}	    }	  i += optind - 1;	  if (optc == EOF)	    break;	}    }  if (minusflag)    adjustment = -adjustment;  if (!adjustment_given)    adjustment = 10;  if (i == argc)    {      if (adjustment_given)	{	  error (0, 0, _("a command must be given with an adjustment"));	  usage (EXIT_FAILURE);	}      /* No command given; print the priority. */      errno = 0;      current_priority = GET_PRIORITY ();      if (current_priority == -1 && errno != 0)	error (EXIT_FAILURE, errno, _("cannot get priority"));      printf ("%d\n", current_priority);      exit (EXIT_SUCCESS);    }#ifndef NICE_PRIORITY  errno = 0;  current_priority = GET_PRIORITY ();  if (current_priority == -1 && errno != 0)    error (EXIT_FAILURE, errno, _("cannot get priority"));  if (setpriority (PRIO_PROCESS, 0, current_priority + adjustment))#else  if (nice (adjustment) == -1)#endif    error (EXIT_FAILURE, errno, _("cannot set priority"));  execvp (argv[i], &argv[i]);  {    int exit_status = (errno == ENOENT ? 127 : 126);    error (0, errno, "%s", argv[i]);    exit (exit_status);  }}