14 int readfile (char **buffer
, char *filename
)
19 VERBOSE (DEBUG
, PRINT ("Opening file %s for reading\n", filename
));
20 FILE *fd
= fopen (filename
, "rb");
22 VERBOSE (WARNING
, PRINT ("Can't open file (%s) for reading\n", filename
));
26 VERBOSE (DEBUG
, PRINT ("Seek file size\n"));
27 fseek (fd
, 0, SEEK_END
);
28 int size
= ftell (fd
);
29 fseek (fd
, 0, SEEK_SET
); /* same as rewind(f); */
33 VERBOSE (DEBUG
, PRINT ("Reading %d bytes\n", size
));
34 *buffer
= calloc (size
+ 1, 1);
35 int len
= fread (*buffer
, 1, size
, fd
);
37 VERBOSE (WARNING
, PRINT ("Can't read full file (%s)\n", filename
));
47 char *tempname (char *tempdir
, char *ext
)
49 char table
[65] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_";
51 unsigned int len
= strlen (tempdir
) + 1 + 4 + TLEN
+ ((ext
) ? strlen (ext
) : 0) + 1;
52 char *name
= (char *) calloc (len
, 1);
54 sprintf (name
, "%s/tmp-", tempdir
);
55 while (strlen (name
) + 1 < len
- ((ext
) ? strlen (ext
) : 0)) {
56 name
[strlen (name
)] = table
[rand () % 64];
67 int writefile (char *filename
, char *buffer
, int size
)
72 VERBOSE (DEBUG
, PRINT ("Opening file %s for writing\n", filename
));
73 FILE *fd
= fopen (filename
, "wb");
75 VERBOSE (WARNING
, PRINT ("Can't open file (%s) for writing\n", filename
));
81 VERBOSE (DEBUG
, PRINT ("Writing %d bytes\n", size
));
82 int len
= fwrite (buffer
, size
, 1, fd
);
84 VERBOSE (WARNING
, PRINT ("Can't write full file (%s)\n", filename
));
91 /* vim: set ts=4 sw=4 et: */