Browse Source

Add a write_bytes_to_file so we can have files with NULs in them.

svn:r2662
Nick Mathewson 21 years ago
parent
commit
d5244e3872
2 changed files with 9 additions and 1 deletions
  1. 7 1
      src/common/util.c
  2. 2 0
      src/common/util.h

+ 7 - 1
src/common/util.c

@@ -756,6 +756,13 @@ int check_private_dir(const char *dirname, int create)
  */
 int
 write_str_to_file(const char *fname, const char *str, int bin)
+{
+  return write_bytes_to_file(fname, str, strlen(str), bin);
+}
+
+/* DOCDOC */
+int write_bytes_to_file(const char *fname, const char *str, size_t len,
+                        int bin)
 {
   char tempname[1024];
   int fd;
@@ -772,7 +779,6 @@ write_str_to_file(const char *fname, const char *str, int bin)
         strerror(errno));
     return -1;
   }
-  len = strlen(str);
   result = write_all(fd, str, len, 0);
   if(result < 0 || (size_t)result != len) {
     log(LOG_WARN, "Error writing to %s: %s", tempname, strerror(errno));

+ 2 - 0
src/common/util.h

@@ -88,6 +88,8 @@ file_status_t file_status(const char *filename);
 
 int check_private_dir(const char *dirname, int create);
 int write_str_to_file(const char *fname, const char *str, int bin);
+int write_bytes_to_file(const char *fname, const char *str, size_t len,
+                        int bin);
 char *read_file_to_str(const char *filename, int bin);
 int parse_line_from_file(char *line, size_t maxlen, FILE *f, char **key_out, char **value_out);
 char *expand_filename(const char *filename);