home *** CD-ROM | disk | FTP | other *** search
/ The UNIX CD Bookshelf / OREILLY_TUCB_UNIX_CD.iso / upt / examples / SOURCES / TWIN / TWIN. / iego.c < prev    next >
Encoding:
C/C++ Source or Header  |  1998-07-24  |  860 b   |  41 lines

  1. /* iego.c */
  2. /*******************************************************
  3. * return file name in buf without path or .ext component
  4. * Istvan Mohos, 1987 --- in the Public Domain
  5. *******************************************************/
  6.  
  7. #include "i.h"
  8.  
  9. int
  10. iego (ptr, wbuf, delim, ext)
  11. char *ptr, *wbuf, delim, ext;
  12. {
  13.     char *fr, *to, *mark;
  14.  
  15.     if (BADCHARP(ptr))
  16.         return (ierror ("iego: invalid name pointer"));
  17.     if (delim == 0)
  18.         delim = '/';
  19.  
  20.     to = wbuf;
  21.     *to = '\0';
  22.     for (fr = ptr; *fr++;);
  23.     for (--fr; --fr > ptr;) {
  24.         if (*fr == delim) {
  25.             ++fr;
  26.             break;
  27.         }
  28.     }
  29.     if (*fr == delim)
  30.         ++fr;
  31.     
  32.     if (ext == 0)
  33.         for (mark = ptr; mark < fr; *to++ = *mark++);
  34.     else
  35.         for (;*fr && *fr != ext;)
  36.             *to++ = *fr++;
  37.     *to = '\0';
  38.  
  39.     return (strlen (wbuf));
  40. }
  41.