Esempio n. 1
0
File: files.c Progetto: tcava/bx2
/*
 * file_writeb: Write binary data (not a line of text) to a file or logfile
 *
 * logtype: 0 if 'fd' is an $open() refnum.
 *          1 if 'fd' is a /window refnum.
 *	    2 if 'fd' is a /log refnum.
 * fd: A reference number, depending on the type of 'logtype'
 * stuff: CTCP-ENCODED binary data that should be written to a file
 */
int	file_writeb (int logtype, int fd, char *stuff)
{
	File 	*ptr;
	int	retval;
	size_t	len = strlen(stuff);

	if (logtype == 2)		/* General logfile */
		ptr = NULL /* */;
	else if (logtype == 1)		/* Window logfile */
		ptr = lookup_window_logfile(fd);
	else
		ptr = lookup_file(fd);

	if (!ptr || !ptr->elf->fp)
		return -1;

	/* XXX This should use transform_string() */
	stuff = dequote_it(stuff, &len);
	retval = fwrite(stuff, 1, len, ptr->elf->fp);
	new_free(&stuff);

	if ((fflush(ptr->elf->fp)) == EOF)
		return -1;
	return retval;
}
Esempio n. 2
0
char	*do_crypt (char *str, Crypt *key, int flag)
{
    size_t	c;
    char	*free_it = NULL;

    c = strlen(str);
    if (flag)
    {
        if (key->prog)
            free_it = str = (char*)prog_crypt(str, &c, key, flag);
        else
            my_encrypt(str, c, key->key);
        str = enquote_it(str, c);
    }
    else
    {
        str = dequote_it(str, &c);
        if (key->prog)
            str = (char*)prog_crypt(free_it = str, &c, key, flag);
        else
            my_decrypt(str, c, key->key);
    }
    new_free(&free_it);
    return (str);
}