home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / misc / volume1 / 8712 / mkmf / 2 / src / pathcat.c < prev    next >
Encoding:
C/C++ Source or Header  |  1990-07-13  |  946 b   |  49 lines

  1. /* $Header: pathcat.c,v 1.2 85/03/17 15:23:03 nicklin Exp $ */
  2.  
  3. /*
  4.  * Author: Peter J. Nicklin
  5.  */
  6.  
  7. /*
  8.  * pathcat() concatenates path components p1 and p2 into character buffer
  9.  * p1_p2. Returns p1_p2.
  10.  */
  11. #include <stdio.h>
  12. #include "path.h"
  13.  
  14. extern char *PGN;            /* program name */
  15.  
  16. char *
  17. pathcat(p1_p2, p1, p2)
  18.     register char *p1;
  19.     register char *p2;
  20.     register char *p1_p2;
  21. {
  22.     register int plen;        /* maximum pathname length */
  23.     char *sp1_p2;            /* start of p1_p2 */
  24.  
  25.     sp1_p2 = p1_p2;
  26.     for (plen = PATHSIZE; plen > 0; plen--, p1_p2++, p1++)
  27.         if ((*p1_p2 = *p1) == '\0')
  28.             break;
  29.     if (*p2 != '\0' && plen > 0)
  30.         {
  31.         if (p1_p2 != sp1_p2 && p1_p2[-1] != _PSC)
  32.             {
  33.             *p1_p2++ = _PSC;
  34.             plen--;
  35.             }
  36.         for (; plen > 0; plen--, p1_p2++, p2++)
  37.             if ((*p1_p2 = *p2) == '\0')
  38.                 break;
  39.         }
  40.     if (plen == 0)
  41.         {
  42.         *--p1_p2 = '\0';
  43.         if (*PGN != '\0')
  44.             fprintf(stderr, "%s: ", PGN);
  45.         fprintf(stderr, "pathname too long\n");
  46.         }
  47.     return(sp1_p2);
  48. }
  49.