Ignore:
Timestamp:
Aug 29, 2002, 9:55:43 AM (23 years ago)
Author:
bird
Message:

Parse segments so we can spit out more correct watcom directives.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/tools/common/kFileDef.cpp

    r9133 r9162  
    1 /* $Id: kFileDef.cpp,v 1.11 2002-08-25 23:24:57 bird Exp $
     1/* $Id: kFileDef.cpp,v 1.12 2002-08-29 07:55:43 bird Exp $
    22 *
    33 * kFileDef - Definition files.
     
    187187    char *psz;
    188188    char  szBuffer[256];
     189    char  ch;
    189190
    190191    /* readloop */
     
    263264                *pps = new DEFSEGMENT; memset(*pps, 0, sizeof(**pps));
    264265                (**pps).psz = dupeString(psz);
     266
     267                printf("debug: parsing: %s\n", psz);
     268                /* seg name */
     269                (**pps).pszName = ltrim((**pps).psz);
     270                ch = *(**pps).pszName;
     271                if (ch == '\'' || ch == '\"')
     272                    pszTmp = strchr(++(**pps).pszName, ch);
     273                else
     274                    pszTmp = strpbrk((**pps).pszName, " \t");
     275                if (pszTmp)
     276                {
     277                    *pszTmp = '\0';
     278
     279                    /* class ? */
     280                    pszTmp = ltrim(pszTmp + 1);
     281                    if (!strnicmp(pszTmp, "CLASS", 5))
     282                    {
     283                        (**pps).pszClass = ltrim(pszTmp + 5);
     284                        ch = *(**pps).pszClass;
     285                        if (ch == '\'' || ch == '\"')
     286                            pszTmp = strchr(++(**pps).pszClass, ch);
     287                        else
     288                            pszTmp = strpbrk((**pps).pszClass, " \t");
     289                        if (pszTmp)
     290                        {
     291                            *pszTmp++ = '\0';
     292                        }
     293                    }
     294                    if (pszTmp)
     295                    {
     296                        /* attribs */
     297                        (**pps).pszAttr = trim(pszTmp);
     298                        if (!*(**pps).pszAttr)
     299                            (**pps).pszAttr = NULL;
     300                    }
     301                }
     302
     303                printf("debug: pszName=%s\n", (**pps).pszName);
     304                printf("debug: pszClass=%s\n", (**pps).pszClass);
     305                printf("debug: pszAttr=%s\n", (**pps).pszAttr);
     306                /* next */
    265307                pps = &(**pps).pNext;
    266308            }
     
    765807    while (pSeg != NULL)
    766808    {
    767         pOut->printf("SEGMENT %s\n", pSeg->psz);
     809        if (pSeg->pszName)
     810            pOut->printf("SEGMENT %s %s\n", pSeg->pszName, pSeg->pszAttr ? pSeg->pszAttr : "");
     811        if (pSeg->pszClass)
     812            pOut->printf("SEGMENT CLASS %s %s\n", pSeg->pszClass, pSeg->pszAttr ? pSeg->pszAttr : "");
    768813        pSeg = pSeg->pNext;
    769814    }
Note: See TracChangeset for help on using the changeset viewer.