/* * 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' * text: CTCP-ENCODED binary data that should be written to a file */ int file_writeb (int logtype, int fd, char *text) { File * ptr; int retval; char * ret; size_t retlen; 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; if (!(ret = transform_string_dyn("-CTCP", text, 0, &retlen))) { yell("$writeb(): Could not CTCP dequote [%s]", text); return -1; } retval = fwrite(ret, 1, retlen, ptr->elf->fp); new_free(&ret); if ((fflush(ptr->elf->fp)) == EOF) return -1; return retval; }
/* * 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; }
/* * file_write: Write something 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: what should be written to the file. * * XXX - I think writes to logfiles should be sent back to the logging funcs */ static int file_write (int logtype, int fd, const char *stuff) { File *ptr; int retval; 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 call add_to_log if it's a logfile */ retval = fprintf(ptr->elf->fp, "%s\n", stuff); /* XXX utf8 XXX */ if ((fflush(ptr->elf->fp)) == EOF) return -1; return retval; }