home *** CD-ROM | disk | FTP | other *** search
/ ftp.wwiv.com / ftp.wwiv.com.zip / ftp.wwiv.com / pub / MISC / MN325SRC.ZIP / makenl-3.2.5 / src / oslnxful.c < prev    next >
C/C++ Source or Header  |  2005-02-06  |  1KB  |  49 lines

  1. /* $Id: oslnxful.c,v 1.7 2004/09/05 10:43:57 mbroek Exp $ */
  2.  
  3. #define HAVE_OS_FULLPATH
  4. #include <unistd.h>
  5.  
  6. #ifdef DMALLOC
  7. #include "dmalloc.h"
  8. #endif
  9.  
  10. int os_fullpath(char *dst, const char *src, size_t bufsize)
  11. {
  12.     char olddir[MYMAXDIR];
  13.     char dir[MYMAXDIR];
  14.     char name[MYMAXFILE];
  15.     char ext[MYMAXEXT];
  16.  
  17.     myfnsplit(src, NULL, dir, name, ext);
  18. #define FUNCNAME ""
  19.     Debug1("[linux] os_fullpath: dir=%s", dir);
  20.     Debug1(" name=%s", name);
  21.     Debug1(" ext=%s\n", ext);
  22.     mklog(4, "[linux] os_fullpath: dir=%s, name=%s, ext=%s", dir, name, ext);
  23.     getcwd(olddir, sizeof olddir);
  24. #undef FUNCNAME
  25. #define FUNCNAME "[linux] os_fullpath"
  26.     Debug1("old directory=%s\n", olddir);
  27.     mklog(4, "[linux] os_fullpath: old directory=%s", olddir);
  28.     if (dir[0] && chdir(dir) == -1)
  29.     {
  30.         Debug1("change directory to '%s' failed!\n", dir);
  31.     mklog(2, "[linux] os_fullpath: change directory to '%s' failed!", dir);
  32.         return -1;
  33.     }
  34.     if (getcwd(dir, MYMAXDIR) == NULL
  35.         || strlen(dir) + strlen(name) + strlen(ext) > bufsize)
  36.     {
  37.         fprintf(stderr, "Directory name for %s too long!\n", src);
  38.     mklog(0, "Directory name for %s too long!", src);
  39.         chdir(olddir);
  40.         return -1;
  41.     }
  42.     myfnmerge(dst, NULL, dir, name, ext);
  43.     Debug1("Complete filename: %s\n", dst);
  44.     mklog(3, "[linux] os_fullpath: complete filename: %s", dst);
  45.     chdir(olddir);
  46.     return 0;
  47. #undef FUNCNAME
  48. }
  49.