A Useful Program

The rnote program is a simple way to keep track of which version did what. Just compile it and run:

% rnote RELEASE_NOTES | more

The program itself is written in C and should compile on most systems. The numbers along the left are for descriptive purposes and are not a part of the code.

# include <stdio.h>
# include <ctype.h>
# include <stdlib.h>
# include <strings.h>
# include <errno.h>

int
main(int argc, char **argv)
{
        char *c, *cp, *prefix = NULL;
        FILE *fp;
        char buf[BUFSIZ];

        if (argc != 2)
        {
                (void) printf("Usage: rnote RELEASE_NOTES
");
                exit(EINVAL);
        }

        if ((fp = fopen(argv[1], "r")) == NULL)
        { 
                (void) fprintf(stderr, "rnote: %s: %s
",
                        argv[1], strerror(errno));
                (void) exit(errno);
        }

        while ((cp = fgets(buf, BUFSIZ, fp)) != NULL)
        {
                if (isdigit((int)*cp))
                {
                        if ((c = strchr(cp, '/')) != NULL)
                        {
                                *c = '';
                                if (prefix != NULL)
                                        (void) free(prefix);
                                prefix = strdup(cp);
                                continue;
                        }
                }
                if (prefix == NULL)
                        continue;
                
                (void) printf("%-7.7s%s", prefix, cp);
        }
        if (ferror(fp))
        { 
                (void) fprintf(stderr, "rnote: %s: %s
",
                        argv[1], strerror(errno));
                (void) exit(errno);
        }
        return 0;
}

After opening the RELEASE_NOTES file, it is read in a loop, one line at a time. If a line of the file begins with a digit, it is presumed to be a release number (such as 8.12.11). Everything following the first slash character is removed and the result becomes the new prefix for all following file lines. Each line of the file is then prefixed with the release that created it and printed.

By piping the output of this program through a program such as more(1) or less(1), you may search for such things as new macros or changes to libmilter. We leave as an exercise to the reader the option to create improvements in, or additions to, this program.

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
3.137.187.233