Esempio n. 1
0
asmlinkage long sys_tee(int fdin, int fdout, size_t len, unsigned int flags)
{
	struct file *in;
	int error, fput_in;

	if (unlikely(!len))
		return 0;

	error = -EBADF;
	in = fget_light(fdin, &fput_in);
	if (in) {
		if (in->f_mode & FMODE_READ) {
			int fput_out;
			struct file *out = fget_light(fdout, &fput_out);

			if (out) {
				if (out->f_mode & FMODE_WRITE)
					error = do_tee(in, out, len, flags);
				fput_light(out, fput_out);
			}
		}
 		fput_light(in, fput_in);
 	}

	return error;
}
Esempio n. 2
0
File: tee.c Progetto: bproctor/utils
int command_tee (int argc, char **argv)
{
    int i, in, out;
    char *ptr;

    in = STDIN_FILENO;
    out = STDOUT_FILENO;
    progname = argv[0];

    for (i = 1; i < argc; ++i)
    {
        ptr = argv[i];
        if (*ptr == '-')
        {
            while (*++ptr)
                switch (*ptr)
                {
                case '-':
                    if (!strcmp (ptr, "-help"))
                        puts (help_text);
                    else if (!strcmp (ptr, "-version"))
                        puts ("tee: version "VERSION);
                    else
                        terror ("invalid option `%s'", argv[i]);
                    return (EXIT_SUCCESS);
                case 'a':
                    flag_append = 1;
                    continue;
                case 'i':
                    flag_ignore = 1;
                    continue;
                }
        }
        else
        {

        }
    }
    do_tee (in, out);
    return (EXIT_SUCCESS);
}