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 / osgenfld.c < prev    next >
C/C++ Source or Header  |  2005-02-06  |  1KB  |  38 lines

  1. /* $Id: osgenfld.c,v 1.5 2004/09/05 10:43:57 mbroek Exp $ */
  2.  
  3. #include <sys/types.h>
  4. #include <sys/stat.h>
  5.  
  6. /* make an absolute path from given relative path */
  7. /* src is supposed to specify an existing directory name    */
  8. #define FUNCNAME "[generic] os_fulldir"
  9. int os_fulldir(char *dst, const char *src, size_t bufsiz)
  10. {
  11.     char tmp[MYMAXPATH];
  12.     struct stat st;
  13.  
  14.     Debug1("called with src='%s'\n", src);
  15.     mklog(4, "[generic] os_fulldir: called with src='%s'", src);
  16.     strcpy(tmp, src);
  17.     os_remove_slash(tmp);
  18.     Debug1("after removing slash: '%s'\n", tmp);
  19.     mklog(4, "[generic] os_fulldir: after removing slash: '%s'", tmp);
  20.     if (os_fullpath(dst, tmp, bufsiz) != 0)
  21.     {
  22.         Debug("os_fullpath failed!\n");
  23.     mklog(3, "[generic] os_fulldir: os_fullpath failed!");
  24.         return -1;
  25.     }
  26.     Debug1("doing stat on %s\n", dst);
  27.     mklog(3, "[generic] os_fulldir: absolute path %s", dst);
  28.     if (stat(dst, &st) != 0)
  29.     {
  30.         Debug("os_fulldir: stat failed!\n");
  31.     mklog(3, "[generic] os_fulldir: stat failed!");
  32.         return -1;
  33.     }
  34.     Debug1("st_mode is now %o\n", st.st_mode);
  35.     mklog(4, "[generic] os_fulldir: st_mode is now %o", st.st_mode);
  36.     return ((st.st_mode & S_IFMT) == S_IFDIR) ? 0 : -1;
  37. }
  38.