summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormichael <michael@82007160-df01-0410-b94d-b575c5fd34c7>2012-10-31 23:11:40 +0000
committermichael <michael@82007160-df01-0410-b94d-b575c5fd34c7>2012-10-31 23:11:40 +0000
commit66b1fc152776ef824c291307dd7be93c0e2a9ad6 (patch)
tree47208b748b446d47896aa32dd14fdd199de4483b
parent67759eb6e3fc0c1aaa41ae8b6dee559eb428936f (diff)
- src/conf_db.c: Cleanup get_file_version()
git-svn-id: svn://svn.ircd-hybrid.org/svnroot/ircd-hybrid/trunk@1621 82007160-df01-0410-b94d-b575c5fd34c7
-rw-r--r--include/conf_db.h2
-rw-r--r--src/conf_db.c21
2 files changed, 9 insertions, 14 deletions
diff --git a/include/conf_db.h b/include/conf_db.h
index f6b7641..9f0a731 100644
--- a/include/conf_db.h
+++ b/include/conf_db.h
@@ -39,7 +39,7 @@ struct dbFILE
};
extern void check_file_version(struct dbFILE *);
-extern int get_file_version(struct dbFILE *);
+extern uint32_t get_file_version(struct dbFILE *);
extern int write_file_version(struct dbFILE *, uint32_t);
extern struct dbFILE *open_db(const char *, const char *, const char *, uint32_t);
diff --git a/src/conf_db.c b/src/conf_db.c
index 8092a9c..9c1a70c 100644
--- a/src/conf_db.c
+++ b/src/conf_db.c
@@ -41,26 +41,21 @@
* \param f dbFile Struct Member
* \return int 0 if failure, 1 > is the version number
*/
-int
+uint32_t
get_file_version(struct dbFILE *f)
{
- FILE *fp = f->fp;
- int version = fgetc(fp) << 24 | fgetc(fp) << 16 | fgetc(fp) << 8 | fgetc(fp);
+ uint32_t version = 0;
- if (ferror(fp))
- {
- ilog(LOG_TYPE_IRCD, "Error reading version number on %s", f->filename);
- return 0;
- }
- else if (feof(fp))
+ if (read_uint32(&version, f) == -1)
{
- ilog(LOG_TYPE_IRCD, "Error reading version number on %s: End of file detected",
- f->filename);
+ ilog(LOG_TYPE_IRCD, "Error reading version number on %s: %s",
+ f->filename, strerror(errno));
return 0;
}
- else if (version < 1)
+
+ if (version < 1)
{
- ilog(LOG_TYPE_IRCD, "Invalid version number (%d) on %s",
+ ilog(LOG_TYPE_IRCD, "Invalid version number (%u) on %s",
version, f->filename);
return 0;
}