Add a wrapper to fwrite().
authorLaurent Monin <geeqie@norz.org>
Thu, 1 May 2008 22:27:44 +0000 (22:27 +0000)
committerLaurent Monin <geeqie@norz.org>
Thu, 1 May 2008 22:27:44 +0000 (22:27 +0000)
src/secure_save.c
src/secure_save.h

index 64cc6bc..b9f6ed7 100644 (file)
@@ -370,6 +370,26 @@ secure_fprintf(SecureSaveInfo *ssi, const gchar *format, ...)
        return ret;
 }
 
+/** fwrite() wrapper, set ssi->err to errno on error and return a value less than
+ * the number of elements to write. If ssi->err is set when called, it immediatly returns 0.
+ */
+size_t
+secure_fwrite(const void *ptr, size_t size, size_t nmemb, SecureSaveInfo *ssi)
+{
+       size_t ret;
+
+       if (!ssi || !ssi->fp || ssi->err) return 0;
+
+       ret = fwrite(ptr, size, nmemb, ssi->fp);
+       if (ret < nmemb)
+               {
+               ssi->err = errno;
+               secsave_errno = SS_ERR_OTHER;
+               }
+
+       return ret;
+}
+
 gchar *
 secsave_strerror(SecureSaveErrno secsave_error)
 {
index d1aecc6..2ac953e 100644 (file)
@@ -22,6 +22,7 @@ gint secure_fputs(SecureSaveInfo *, const gchar *);
 gint secure_fputc(SecureSaveInfo *, gint);
 
 gint secure_fprintf(SecureSaveInfo *, const gchar *, ...);
+size_t secure_fwrite(const void *ptr, size_t size, size_t nmemb, SecureSaveInfo *ssi);
 
 gchar *secsave_strerror(SecureSaveErrno);