# HG changeset patch # User zas_ # Date 1209680864 0 # Node ID d8494488d2d216a8e0f176602c8ca9ca42f4df0f # Parent 8123d713dd3f1bc29a23ff4c1217d2e3f11508c0 Add a wrapper to fwrite(). diff -r 8123d713dd3f -r d8494488d2d2 src/secure_save.c --- a/src/secure_save.c Thu May 01 21:42:22 2008 +0000 +++ b/src/secure_save.c Thu May 01 22:27:44 2008 +0000 @@ -370,6 +370,26 @@ 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) { diff -r 8123d713dd3f -r d8494488d2d2 src/secure_save.h --- a/src/secure_save.h Thu May 01 21:42:22 2008 +0000 +++ b/src/secure_save.h Thu May 01 22:27:44 2008 +0000 @@ -22,6 +22,7 @@ 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);