can't reset it if not set up
[unix-history] / usr / src / old / make / doname.c
index 0be1332..870a4d0 100644 (file)
@@ -1,5 +1,7 @@
-static char *sccsid = "@(#)doname.c    4.2 (Berkeley) 83/02/03";
+static char *sccsid = "@(#)doname.c    4.8 (Berkeley) 85/09/18";
 #include "defs"
 #include "defs"
+#include <strings.h>
+#include <signal.h>
 
 /*  BASIC PROCEDURE.  RECURSIVE.  */
 
 
 /*  BASIC PROCEDURE.  RECURSIVE.  */
 
@@ -10,6 +12,8 @@ p->done = 2   file already exists in current state
 p->done = 3   file make failed
 */
 
 p->done = 3   file make failed
 */
 
+extern char *sys_siglist[];
+
 doname(p, reclevel, tval)
 register struct nameblock *p;
 int reclevel;
 doname(p, reclevel, tval)
 register struct nameblock *p;
 int reclevel;
@@ -25,8 +29,8 @@ struct nameblock *p1, *p2;
 struct shblock *implcom, *explcom;
 register struct lineblock *lp;
 struct lineblock *lp1, *lp2;
 struct shblock *implcom, *explcom;
 register struct lineblock *lp;
 struct lineblock *lp1, *lp2;
-char sourcename[100], prefix[100], temp[100], concsuff[20];
-char *pnamep, *p1namep;
+char sourcename[BUFSIZ], prefix[BUFSIZ], temp[BUFSIZ], concsuff[20];
+char *pnamep, *p1namep, *cp;
 char *mkqlist();
 struct chain *qchain, *appendq();
 
 char *mkqlist();
 struct chain *qchain, *appendq();
 
@@ -52,7 +56,7 @@ errstat = 0;
 tdep = 0;
 implcom = 0;
 explcom = 0;
 tdep = 0;
 implcom = 0;
 explcom = 0;
-ptime = exists(p->namep);
+ptime = exists(p); 
 ptime1 = 0;
 didwork = NO;
 p->done = 1;   /* avoid infinite loops */
 ptime1 = 0;
 didwork = NO;
 p->done = 1;   /* avoid infinite loops */
@@ -122,6 +126,7 @@ for(lp = sufflist ; lp ; lp = lp->nxtlineblock)
        pnamep = suffp->depname->namep;
        if(suffix(p->namep , pnamep , prefix))
                {
        pnamep = suffp->depname->namep;
        if(suffix(p->namep , pnamep , prefix))
                {
+
                srchdir( concat(prefix,"*",temp) , NO, (struct depblock *) NULL);
                for(lp1 = sufflist ; lp1 ; lp1 = lp1->nxtlineblock)
                    for(suffp1=lp1->depp ; suffp1 ; suffp1 = suffp1->nxtdepblock)
                srchdir( concat(prefix,"*",temp) , NO, (struct depblock *) NULL);
                for(lp1 = sufflist ; lp1 ; lp1 = lp1->nxtlineblock)
                    for(suffp1=lp1->depp ; suffp1 ; suffp1 = suffp1->nxtdepblock)
@@ -136,13 +141,17 @@ for(lp = sufflist ; lp ; lp = lp->nxtlineblock)
 if(dbgflag) printf("TIME(%s)=%ld\n", p2->namep, td);
                                if(td > tdep) tdep = td;
                                setvar("*", prefix);
 if(dbgflag) printf("TIME(%s)=%ld\n", p2->namep, td);
                                if(td > tdep) tdep = td;
                                setvar("*", prefix);
-                               setvar("<", copys(sourcename));
+                               if (p2->alias) setvar("<", copys(p2->alias));
+                               else setvar("<", copys(p2->namep));
                                for(lp2=p1->linep ; lp2 ; lp2 = lp2->nxtlineblock)
                                        if(implcom = lp2->shp) break;
                                goto endloop;
                                }
                        }
                                for(lp2=p1->linep ; lp2 ; lp2 = lp2->nxtlineblock)
                                        if(implcom = lp2->shp) break;
                                goto endloop;
                                }
                        }
-               setvar("*", &prefix[rindex(prefix, '/')]);
+               cp = rindex(prefix, '/');
+               if (cp++ == 0)
+                       cp = prefix;
+               setvar("*", cp);
                }
        }
 
                }
        }
 
@@ -161,7 +170,8 @@ if(errstat==0 && (ptime<tdep || (ptime==0 && tdep==0) ) )
        else if(p->septype == 0)
                if(p1=srchname(".DEFAULT"))
                        {
        else if(p->septype == 0)
                if(p1=srchname(".DEFAULT"))
                        {
-                       setvar("<", p->namep);
+                       if (p->alias) setvar("<", p->alias);
+                       else setvar("<", p->namep);
                        for(lp2 = p1->linep ; lp2 ; lp2 = lp2->nxtlineblock)
                                if(implcom = lp2->shp)
                                        {
                        for(lp2 = p1->linep ; lp2 ; lp2 = lp2->nxtlineblock)
                                if(implcom = lp2->shp)
                                        {
@@ -178,7 +188,7 @@ if(errstat==0 && (ptime<tdep || (ptime==0 && tdep==0) ) )
                        fatal1(" Don't know how to make %s", p->namep);
 
        setvar("@", (char *) NULL);
                        fatal1(" Don't know how to make %s", p->namep);
 
        setvar("@", (char *) NULL);
-       if(noexflag || (ptime = exists(p->namep)) == 0)
+       if(noexflag || (ptime = exists(p)) == 0)
                ptime = prestime();
        }
 
                ptime = prestime();
        }
 
@@ -205,6 +215,7 @@ char *s;
 struct varblock *varptr();
 int ign, nopr;
 char string[OUTMAX];
 struct varblock *varptr();
 int ign, nopr;
 char string[OUTMAX];
+char string2[OUTMAX];
 
 ++ndocoms;
 if(questflag)
 
 ++ndocoms;
 if(questflag)
@@ -221,7 +232,8 @@ if(touchflag)
 
 else for( ; q ; q = q->nxtshblock )
        {
 
 else for( ; q ; q = q->nxtshblock )
        {
-       subst(q->shbp,string);
+       subst(q->shbp,string2);
+       fixname(string2, string);
 
        ign = ignerr;
        nopr = NO;
 
        ign = ignerr;
        nopr = NO;
@@ -257,9 +269,17 @@ if(noexflag) return(0);
 
 if( status = dosys(comstring, nohalt) )
        {
 
 if( status = dosys(comstring, nohalt) )
        {
-       if( status>>8 )
-               printf("*** Error code %d", status>>8 );
-       else    printf("*** Termination code %d", status );
+       unsigned sig = status & 0177;
+       if( sig ) {
+               if (sig < NSIG && sys_siglist[sig] != NULL &&
+                   *sys_siglist[sig] != '\0')
+                       printf("*** %s", sys_siglist[sig]);
+               else
+                       printf("*** Signal %d", sig);
+               if (status & 0200)
+                       printf(" - core dumped");
+       } else
+               printf("*** Exit %d", status>>8 );
 
        if(nohalt) printf(" (ignored)\n");
        else    printf("\n");
 
        if(nohalt) printf(" (ignored)\n");
        else    printf("\n");
@@ -282,6 +302,8 @@ register char *s;
 char *s1;
 struct depblock *p, *srchdir();
 
 char *s1;
 struct depblock *p, *srchdir();
 
+if (q->depname == NULL)
+       return;
 s1 = q->depname->namep;
 for(s=s1 ; ;) switch(*s++)
        {
 s1 = q->depname->namep;
 for(s=s1 ; ;) switch(*s++)
        {