-const char miscutil_rcs[] = "$Id: miscutil.c,v 1.7 2001/06/03 11:03:48 oes Exp $";
+/* vim:ts=3: */
+const char miscutil_rcs[] = "$Id: miscutil.c,v 1.11 2001/06/07 23:09:19 jongfoster Exp $";
/*********************************************************************
*
* File : $Source: /cvsroot/ijbswa/current/miscutil.c,v $
*
* Revisions :
* $Log: miscutil.c,v $
+ * Revision 1.11 2001/06/07 23:09:19 jongfoster
+ * Cosmetic indentation changes.
+ *
+ * Revision 1.10 2001/06/07 14:51:38 joergs
+ * make_path() no longer adds '/' if the dir already ends in '/'.
+ *
+ * Revision 1.9 2001/06/07 14:43:17 swa
+ * slight mistake in make_path, unix path style is /.
+ *
+ * Revision 1.8 2001/06/05 22:32:01 jongfoster
+ * New function make_path() to splice directory and file names together.
+ *
+ * Revision 1.7 2001/06/03 19:12:30 oes
+ * introduced bindup()
+ *
* Revision 1.7 2001/06/03 11:03:48 oes
* Makefile/in
*
#include <malloc.h>
#include <ctype.h>
-#include "miscutil.h"
+/*\r
+ * FIXME: Only need project.h for BUFFER_SIZE. It would be nice\r
+ * to remove this dependency.\r
+ */\r
+#include "project.h"\r
+#include "miscutil.h"\r
#include "errlog.h"
const char miscutil_h_rcs[] = MISCUTIL_H_VERSION;
char *safe_strerror(int err)
{
char *s = NULL;
- char buf[BUFSIZ];
+ char buf[BUFFER_SIZE];
#ifdef HAVE_STRERROR
*********************************************************************/
int simplematch(char *pattern, char *text)
{
- char *fallback;
- char *pat = pattern;
- char *txt = text;
- int wildcard = 0;
+ char *fallback;
+ char *pat = pattern;
+ char *txt = text;
+ int wildcard = 0;
- char lastchar = 'a';
- unsigned i;
- unsigned char charmap[32];
+ char lastchar = 'a';
+ unsigned i;
+ unsigned char charmap[32];
while (*txt)
}
+/*********************************************************************
+ *
+ * Function : make_path
+ *
+ * Description : Takes a directory name and a file name, returns
+ * the complete path. Handles windows/unix differences.
+ * If the file name is already an absolute path, or if
+ * the directory name is NULL or empty, it returns
+ * the filename.
+ *
+ * Parameters :
+ * 1 : dir: Name of directory or NULL for none.
+ * 2 : file: Name of file. Should not be NULL or empty.
+ *
+ * Returns : "dir/file" (Or on windows, "dir\file").
+ * It allocates the string on the heap. Caller frees.
+ * Returns NULL in error (i.e. NULL file or out of
+ * memory)
+ *
+ *********************************************************************/
+char * make_path(const char * dir, const char * file)
+{
+#ifdef AMIGA
+ char path[512];
+
+ if(dir)
+ {
+ strncpy(path,dir,512);
+ path[511]=0;
+ } else {
+ path[0]=0;
+ }
+ if(AddPart(path,file,512))
+ {
+ return strdup(path);
+ } else {
+ return NULL;
+ }
+#else /* ndef AMIGA */
+
+ if ((file == NULL) || (*file == '\0'))
+ {
+ return NULL; /* Error */
+ }
+
+ if ((dir == NULL) || (*dir == '\0') /* No directory specified */
+#ifdef _WIN32
+ || (*file == '\\') || (file[1] == ':') /* Absolute path (DOS) */
+#else /* ifndef _WIN32 */
+ || (*file == '/') /* Absolute path (U*ix) */
+#endif /* ifndef _WIN32 */
+ )
+ {
+ return strdup(file);
+ }
+ else
+ {
+ char * path = malloc(strlen(dir) + strlen(file) + 2);
+ strcpy(path, dir);
+#ifdef _WIN32
+ strcat(path, "\\");
+#else /* ifndef _WIN32 */
+ if(path[strlen(path)-1] != '/') strcat(path, "/");
+#endif /* ifndef _WIN32 */
+ strcat(path, file);
+
+ return path;
+ }
+#endif /* ndef AMIGA */
+}
+
+
/*
Local Variables:
tab-width: 3