[comp.lang.c] QuickC Bugs

walt_waldo_novinger@cup.portal.com (12/31/87)

I have found and reported to MicroSoft the following bugs in the
QuickC v1.0 `_splitpath` function and its documentation. The
code fragment below illustrates the code which will reproduce
the bug. The following describes the problems:

    1) The documentation in the "Run-Time Library Reference",
       pp 559-60 contains several errors. The Summary indicates
       that `stdlib.h` must be included, while the example shows
       `dos.h`; `stdlib.h` is correct.

    2) The example program shows the returned variables declared
       as "char * var [n]". The example program below shows the
       *correct* declaration syntax.

    3) The bug, which can be observed under the debugger, is
       that the first character of the `prog` variable is left
       as a null. For instance, if the string "d:\\tmp\\bazfaz.exe"
       is fed to the function, `prog` will contain "\0azfaz\0\0\0"
       on return. The rest of the variables are correctly set.

Items 1) and 2) above apply to the documentation for `_makepath`
as well (pp 407-08); `_makepath` *does* work as documented, however.

I am awaiting a response from MicroSoft vis-a-vis a patch
(though the tech with whom I spoke indicated that they probably
won't release one). If I receive one or any hard info on a fix,
I'll post it here.

========================= Example Program =================================
#include <stdio.h>
#include <stdlib.h>

/* get program name from DOS, extract base name and convert to lowercase */

char *progname(pathname)
char pathname[40];
{
        char drive[3];  /* note that `*` is *incorrect* */
        char dir[60];
        char prog[9];
        char ext[4];
        char *result;

        _splitpath(pathname, drive, dir, prog, ext);
        result = strlwr(prog);                      /* convert to lowercase */
        return (result);
}


main(argc, argv)
int argc;
char *argv[];
{
        char *pro;

        pro = progname(argv[0]);        /* extract program name w/o extension */

        [...]

        exit (0);
}
========================================================================
Walt Novinger            sun!cup.portal.com!waldo    "The real world is
680 Sylvan Ave. #17      waldo@cup.portal.com         NOT user-friendly"
Mountain View, CA 94041  (415) 964-9377                 Kelvin Throop
========================================================================