]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
Add function for checking whether files exist
authorArran Cudbard-Bell <a.cudbardb@freeradius.org>
Thu, 7 Mar 2013 19:26:54 +0000 (14:26 -0500)
committerArran Cudbard-Bell <a.cudbardb@freeradius.org>
Fri, 8 Mar 2013 03:39:42 +0000 (22:39 -0500)
src/include/radiusd.h
src/main/util.c

index 1ab4b4a57170b71f8ce9a305218ac79695044e9e..0c3002a1186acd402b52dc16b3e10ea8a3190ba9 100644 (file)
@@ -610,6 +610,7 @@ void (*reset_signal(int signo, void (*func)(int)))(int);
 void           request_free(REQUEST **request);
 int            rad_mkdir(char *directory, mode_t mode);
 int            rad_checkfilename(const char *filename);
+int            rad_file_exists(const char *filename);
 void           *rad_malloc(size_t size); /* calls exit(1) on error! */
 void           *rad_calloc(size_t size); /* calls exit(1) on error! */
 void           rad_const_free(const void *ptr);
index 13a8ca7f61048080401b71ed230ef16e266b6c18..e8d3b57adba5412714b9b2cf2d5020e568f5cdc7 100644 (file)
@@ -283,6 +283,31 @@ int rad_checkfilename(const char *filename)
        return -1;
 }
 
+/** Check if file exists
+ *
+ * @param filename to check.
+ * @return 0 if the file does not exist, 1 if the file exists, -1 if the file
+ *     exists but there was an error opening it. errno value should be usable
+ *     for error messages.
+ */
+int rad_file_exists(const char *filename)
+{
+       int des;
+       int ret = 1;
+       
+       if ((des = open(filename, O_RDONLY)) == -1) {
+               if (errno == ENOENT) {
+                       ret = 0;
+               } else {
+                       ret = -1;
+               }
+       } else {
+               close(des);
+       }
+       
+       return ret;
+}
+
 /*
  *     Create possibly many directories.
  *