See ChangeLog: Wed Dec 23 13:34:22 CET 1998 Werner Koch
[gnupg.git] / util / fileutil.c
index 88c84ec..adf5c7a 100644 (file)
@@ -1,14 +1,14 @@
 /* fileutil.c -  file utilities
  *     Copyright (C) 1998 Free Software Foundation, Inc.
  *
- * This file is part of GNUPG.
+ * This file is part of GnuPG.
  *
- * GNUPG is free software; you can redistribute it and/or modify
+ * GnuPG is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or
  * (at your option) any later version.
  *
- * GNUPG is distributed in the hope that it will be useful,
+ * GnuPG is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  * GNU General Public License for more details.
 #include "ttyio.h"
 
 
+/***************
+ * Extract from a given path the filename component.
+ *
+ */
+char *
+make_basename(const char *filepath)
+{
+    char *p;
+    
+    if ( !(p=strrchr(filepath, '/')) )
+      #ifdef __MINGW32__
+        if ( !(p=strrchr(filepath, '\\')) )
+            if ( !(p=strrchr(filepath, ':')) )
+      #endif
+              {
+                return m_strdup(filepath);
+              }
+    
+    return m_strdup(p+1);
+}
+
+
+
+/***************
+ * Extract from a given filename the path prepended to it.
+ * If their isn't a path prepended to the filename, a dot
+ * is returned ('.').
+ *
+ */
+char *
+make_dirname(const char *filepath)
+{
+    char *dirname;
+    int  dirname_length;
+    char *p;
+    
+    if ( !(p=strrchr(filepath, '/')) )
+      #ifdef __MINGW32__
+        if ( !(p=strrchr(filepath, '\\')) )
+            if ( !(p=strrchr(filepath, ':')) )
+      #endif
+              {
+                return m_strdup(".");
+              }
+    
+    dirname_length = p-filepath;
+    dirname = m_alloc(dirname_length+1);
+    strncpy(dirname, filepath, dirname_length);
+    dirname[dirname_length] = 0;
+    
+    return dirname;
+}
+
+
+
 /****************
  * Construct a filename from the NULL terminated list of parts.
  * Tilde expansion is done here.
@@ -65,6 +120,20 @@ make_filename( const char *first_part, ... )
 }
 
 
+int
+compare_filenames( const char *a, const char *b )
+{
+    /* ? check whether this is an absolute filename and
+     * resolve symlinks?
+     */
+  #ifdef __MINGW32__
+    return stricmp(a,b);
+  #else
+    return strcmp(a,b);
+  #endif
+}
+
+
 /****************
  * A simple function to decide whether the filename is stdout
  * or a real filename.