Ejemplo n.º 1
0
   GMC_DCL(tp_FilTyp, ToFilTyp)
{
   tp_DrvPth DrvPth, GenericDrvPth;
   boolean IsGeneric;
   tp_FilHdr GenericFilHdr, TmpGenericFilHdr;

   if (FilHdr == ERROR || ToFilTyp == ERROR) return ERROR;

   Do_Search(&DrvPth, &IsGeneric,
	     FilHdr_FKind(FilHdr), FilHdr_FilTyp(FilHdr), ToFilTyp);

   if (IsGeneric) {
      GenericFilHdr = Copy_FilHdr(FilHdr);
      GenericDrvPth = DrvPth;
      while (IsGeneric) {
	 TmpGenericFilHdr = GenericFilHdr;
	 GenericFilHdr = Do_DrvPth(GenericFilHdr, RootFilPrm, RootFilPrm, GenericDrvPth);
	 IsGeneric = FALSE;
	 /*select*/{
	    if (GenericFilHdr == TmpGenericFilHdr) {
	       GenericDrvPth = NIL;
	    }else if (FilHdr_FilTyp(GenericFilHdr) != ToFilTyp) {
	       Do_Search(&GenericDrvPth, &IsGeneric,
			 FilHdr_FKind(GenericFilHdr),
			 FilHdr_FilTyp(GenericFilHdr), ToFilTyp);
	       AppendDrvPth(&DrvPth, GenericDrvPth); };}/*select*/; }/*while*/;
      Ret_FilHdr(GenericFilHdr);
      if (GenericDrvPth == NIL) {
	 Ret_DrvPth(DrvPth);
	 DrvPth = NIL; }/*if*/; }/*if*/;
   return DrvPth;
   }/*Get_DrvPth*/
Ejemplo n.º 2
0
   GMC_DCL(tp_FilTyp, ToFilTyp)
{
   tp_DrvPth DrvPth;

   if (FilHdr == ERROR || InhFilPrm == ERROR || ToFilTyp == ERROR) {
      Ret_FilHdr(FilHdr);
      return ERROR; }/*if*/;

   if (FilHdr_FilTyp(FilHdr) == ToFilTyp) {
      if (PrecFilPrm != RootFilPrm) {
	 Do_Log("Ignoring parameters of", FilHdr, LOGLEVEL_IgnorePrm); }/*if*/;
      return FilHdr; }/*if*/;

   DrvPth = Get_DrvPth(FilHdr, ToFilTyp);
   if (DrvPth == ERROR) {
      SystemError("Cannot derive to <%s> from <%s>\n",
		  FilTyp_FTName(ToFilTyp),
		  FilTyp_FTName(FilHdr_FilTyp(FilHdr)));
      Ret_FilHdr(FilHdr);
      return ERROR; }/*if*/;
   FilHdr = Do_DrvPth(FilHdr, InhFilPrm, PrecFilPrm, DrvPth);
   Ret_DrvPth(DrvPth);

   return FilHdr;
   }/*Do_Deriv*/
Ejemplo n.º 3
0
   GMC_DCL(tp_FilPrm, FilPrm)
{
   tp_FilHdr ValFilHdr;
   tp_FilTyp FilTyp;
   tp_DrvPth DrvPth, DrvPthElm;
   tp_PrmTypLst PrmTypLst;

   Writeln(FilDsc, "*?* Possible Parameters :");
   Clr_PrmTypMarks();
   if (FilPrm == RootFilPrm) {
      SetFilHdr_PrmTypMarks(FilHdr);
      WriteMarkedPrmTyps(FilDsc);
      return; }/*if*/;

   ValFilHdr = LocHdr_FilHdr(FilPVal_LocHdr(FilPrm_FilPVal(FilPrm)));
   FilTyp = FTName_FilTyp(FilHdr_Ident(ValFilHdr));
   Ret_FilHdr(ValFilHdr);
   if (FilTyp == ERROR) {
      return; }/*if*/;
   if (FilHdr_FilTyp(FilHdr) != FilTyp) {
      DrvPth = Get_DrvPth(FilHdr, FilTyp);
      if (DrvPth == ERROR) {
	 SystemError("Cannot derive to <%s>\n", FilTyp_FTName(FilTyp));
	 return; }/*if*/;
      for (DrvPthElm = DrvPth;
	   DrvPthElm != NIL;
	   DrvPthElm = DrvPth_Next(DrvPthElm)) {
	 if (DrvPth_DPType(DrvPthElm) == DPT_Drv) {
	    PrmTypLst = DrvPth_PrmTypLst(DrvPthElm);
	    SetPrmTypLst_Marks(PrmTypLst); }/*if*/; }/*for*/;
      Ret_DrvPth(DrvPth); }/*if*/;
   WriteMarkedPrmTyps(FilDsc);
   }/*WritePrmHelp*/
Ejemplo n.º 4
0
   GMC_DCL(tp_Key, Key)
{
   if (FilHdr_FilTyp(FilHdr) == TargetsFilTyp) {
      return Get_KeyDrv(FilHdr, FK_VirTgtText, Key); }/*if*/;
   FilHdr = Do_Deriv(FilHdr, RootFilPrm, RootFilPrm, VirTargetsFilTyp);
   if (strcmp(Key, ".") == 0) {
      return Do_Deriv(FilHdr, RootFilPrm, RootFilPrm, VirDirFilTyp);
      }/*if*/;
   return Get_KeyDrv(FilHdr, FK_VirTgt, Key);
   }/*Do_VTgt*/
Ejemplo n.º 5
0
   GMC_DCL(tp_FilHdr, FilHdr)
{
   FORBIDDEN(IsTargetsPtr(FilHdr));
   while (!IsSource(FilHdr)) {
      if (IsVTgtText(FilHdr) || FilHdr_FilTyp(FilHdr) == VirTargetsFilTyp) {
	 return FilHdr_Father(FilHdr_Father(FilHdr)); }/*if*/;
      if (IsVTgt(FilHdr)) {
	 return FilHdr_Father(FilHdr_Father(FilHdr_Father(FilHdr))); }/*if*/;
      FilHdr = FilHdr_Father(FilHdr); }/*while*/;
   return FilHdr;
   }/*Get_BaseVTgtFilHdr*/
Ejemplo n.º 6
0
   GMC_DCL(tp_FilHdr, ListFilHdr)
{
   tp_LocElm FirstLE, LastLE;

   if (!(IsList(FilHdr) || IsPntr(FilHdr))) {
      SystemError("Input to :map must be a list.\n");
      return ERROR; }/*if*/;

   FirstLE = NIL; LastLE = NIL;
   Get_Map(&FirstLE, &LastLE, FilHdr, FilHdr_FilPrm(ListFilHdr),
	   FilTyp_ArgFilTyp(FilHdr_FilTyp(ListFilHdr)), ListFilHdr);
   Clr_UnionFlags(FilHdr);
   return FirstLE;
   }/*Make_MapLocElm*/
Ejemplo n.º 7
0
   GMC_DCL(tp_FilHdr, FilHdr)
{
   size_t sz;
   tp_FilHdr OutFilHdr;
   tp_FTName FTName;

   OutFilHdr = Copy_FilHdr(FilHdr);
   if (IsInstance(OutFilHdr)) OutFilHdr = FilHdr_Father(OutFilHdr);
   FTName = FilTyp_ShortFTName(FilHdr_FilTyp(OutFilHdr));
   sz = snprintf(WorkFileName, MAX_FileName, "%s/%s", Job->JobDirName, FTName);
   if (sz >= MAX_FileName) {
      (void)fprintf(stderr, "File name too long (MAX_FileName=%d): %s/%s\n",
		  MAX_FileName, Job->JobDirName, FTName);
      exit(11); }/*if*/;
   Ret_FilHdr(OutFilHdr);
   }/*Get_WorkFileName*/
Ejemplo n.º 8
0
   GMC_DCL(tp_Key, Key)
{
   tp_FilHdr DirFilHdr, DirSymFilHdr, SymDirFilHdr;
   tp_FilTyp FilTyp;
   tp_FKind FKind;

   if (FilHdr == ERROR || Key == ERROR) {
      Ret_FilHdr(FilHdr);
      return ERROR; }/*if*/;

   if (strcmp(Key, ".") == 0) {
      return FilHdr; }/*if*/;

   if (strcmp(Key, "") == 0
       && !(FilHdr == RootFilHdr || FilHdr == NetRootFilHdr)) {
      return FilHdr; }/*if*/;

   if (IsSource(FilHdr)) {
      if (strcmp(Key, "..") == 0) {
	 if (FilHdr == RootFilHdr) {
	    return FilHdr; }/*if*/;
	 DirFilHdr = FilHdr_Father(Copy_FilHdr(FilHdr));
	 if (DirFilHdr == NetRootFilHdr) {
	    Ret_FilHdr(DirFilHdr);
	    return FilHdr; }/*if*/;
	 DirSymFilHdr = FilHdr_Father(Deref_SymLink(Copy_FilHdr(FilHdr)));
	 SymDirFilHdr = Deref_SymLink(Copy_FilHdr(DirFilHdr));
	 Ret_FilHdr(FilHdr);
	 if (DirSymFilHdr == SymDirFilHdr) {
	    Ret_FilHdr(DirSymFilHdr); Ret_FilHdr(SymDirFilHdr);
	    return DirFilHdr; }/*if*/;
	 Ret_FilHdr(DirFilHdr); Ret_FilHdr(SymDirFilHdr);
	 return FilHdr_AliasFilHdr(DirSymFilHdr); }/*if*/;

      if (FilHdr == CacheDirFilHdr) {
	 if (strlen(Key) == 1) {
	    return FilHdr; }/*if*/;
	 Ret_FilHdr(FilHdr);
	 return CacheFileName_FilHdr(Key); }/*if*/;

      return Get_KeyDrv(FilHdr, FK_SrcReg, Key); }/*if*/;

   if (IsVirDir(FilHdr)) {
      return Get_KeyDrv(FilHdr, FK_VirDirElm, Key); }/*if*/;

   if (IsTargets(FilHdr)) {
      return Get_KeyDrv(FilHdr, FK_ActTgtText, Key); }/*if*/;

   if (IsPntr(FilHdr)) {
      return Get_Drv(FilHdr, FK_PntrElm, Key_FilTyp(Key), RootFilPrm, Key);
      }/*if*/;

   if (IsDrvDirElm(FilHdr)) {
      return Get_KeyDrv(FilHdr, FK_DrvDirElm, Key); }/*if*/;

   if (!IsKeyList(FilHdr)) {
      FilHdr_Error("Cannot select from <%s>.\n", FilHdr);
      Ret_FilHdr(FilHdr);
      return ERROR; }/*if*/;

   FilTyp = FilHdr_FilTyp(FilHdr);
   /*select*/{
      if (FilTyp == ActTargetsFilTyp) {
	 FKind = FK_ActTgt;
      }else if (FilTyp == VirTargetsFilTyp) {
	 FKind = FK_VirTgt;
      }else{
         FKind = FK_DrvDirElm; };}/*select*/;
   return Get_KeyDrv(FilHdr, FKind, Key);
   }/*Do_Key*/