Пример #1
0
int
next(char **argv)
{
	static int done;
	int statok;

	if (argv) {
		_argv = argv;
		return(1);
	}
	for (;;) {
		if (*_argv) {
			if (!(freopen(*_argv, "r", stdin))) {
				warn("%s", *_argv);
				exitval = done = 1;
				++_argv;
				continue;
			}
			statok = done = 1;
		} else {
			if (done++)
				return(0);
			statok = 0;
		}
		if (skip)
			doskip(statok ? *_argv : "stdin", statok);
		if (*_argv)
			++_argv;
		if (!skip)
			return(1);
	}
	/* NOTREACHED */
}
int
next(rtems_shell_hexdump_globals* globals, char **argv)
{
#if RTEMS_REMOVED
	static int done;
#endif
	int statok;

	if (argv) {
		_argv = argv;
		return(1);
	}
	for (;;) {
		if (*_argv) {
			done = 1;
      if (!hdstdin) {
        hdstdin = malloc(sizeof(FILE));
        if (!hdstdin)
        {
          errno = ENOMEM;
          err(exit_jump, 1, "file name allocation");
        }
        memset (hdstdin, 0, sizeof(FILE));
      }
			if (!(hdstdin = freopen(*_argv, "r", hdstdin))) {
				warn("%s", *_argv);
				exitval = 1;
				++_argv;
				continue;
			}
			statok = 1;
		} else {
      errno = ECANCELED;
      err(exit_jump, 1, "no file (stdin no supported)");
			if (done++)
				return(0);
			statok = 0;
		}
		if (skip)
			doskip(globals, statok ? *_argv : "stdin", statok);
		if (*_argv)
			++_argv;
		if (!skip)
			return(1);
	}
	/* NOTREACHED */
}
Пример #3
0
int
next(char **argv)
{
	static int done;
	int statok;

	if (argv) {
		_argv = argv;
		return(1);
	}
	for (;;) {
		if (*_argv) {
			done = 1;
			if (!(freopen(*_argv, "r", stdin))) {
				warn("%s", *_argv);
				exitval = 1;
				++_argv;
				continue;
			}
			statok = 1;
		} else {
			if (done++)
				return(0);
			statok = 0;
		}

		if (caph_limit_stream(fileno(stdin), CAPH_READ) < 0)
			err(1, "unable to restrict %s",
			    statok ? _argv[-1] : "stdin");

		/*
		 * We've opened our last input file; enter capsicum sandbox.
		 */
		if (*_argv == NULL) {
			if (cap_enter() < 0 && errno != ENOSYS)
				err(1, "unable to enter capability mode");
		}

		if (skip)
			doskip(statok ? *_argv : "stdin", statok);
		if (*_argv)
			++_argv;
		if (!skip)
			return(1);
	}
	/* NOTREACHED */
}