i know, i know, i've done it a billion times myself --
 but Hugs (in input.c) restricts the size of "preprocessors" and filenames
to 99 characters. a complicated command with pipes and full pathnames
could easily break this ---- giving rather confusing results to those not
in the know.  

i would suggest re-coding the preprocessor code as follows:

    if (preprocessor) {
        int len = strlen(preprocessor) + strlen(nm) + 10;
        char * cmd = (char *) malloc(len);
        strncpy(cmd,preprocessor,len);
        strncat(cmd," ",len);
        strncat(cmd,nm,len);
        cmd[len-1] = '\0'; /* paranoia */
        inputStream = popen(cmd,"r");
        free(cmd);  
    } else {


instead of what's there now:

    if (preprocessor) {
        char cmd[100];
        strncpy(cmd,preprocessor,100);
        strncat(cmd," ",100);
        strncat(cmd,nm,100);
        cmd[99] = '\0'; /* paranoia */
        inputStream = popen(cmd,"r");
    } else {



byron

Reply via email to