This is fixmake.c in view mode; [Download] [Up]
/* ** For systems whose make doesn't handle "include filename" syntax, this ** program reads in "Makefile" and creates "makefile". ** ** Usage: ** fixmake [-i <filename>] [-o <filename>] ** -i <filename> Set input filename, default is "Makefile" ** -o <filename> Set output filename, default is "makefile" ** ** Copyright (c) 1991 Bolt Beranek and Newman, Inc. ** All rights reserved. ** ** Redistribution and use in source and binary forms are permitted ** provided that: (1) source distributions retain this entire copyright ** notice and comment, and (2) distributions including binaries display ** the following acknowledgement: ``This product includes software ** developed by Bolt Beranek and Newman, Inc. and CREN/CSNET'' in the ** documentation or other materials provided with the distribution and in ** all advertising materials mentioning features or use of this software. ** Neither the name of Bolt Beranek and Newman nor CREN/CSNET may be used ** to endorse or promote products derived from this software without ** specific prior written permission. ** ** THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED ** WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF ** MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ #include <stdio.h> #define SUCCESS 0 #define FAILURE 1 static char *progname; extern char *optarg; extern int optind; static int process_file(in_name, outfile) char *in_name; FILE *outfile; { char buff[BUFSIZ]; FILE *F; char name[BUFSIZ]; /* Open the input file */ if ((F = fopen(in_name, "r")) == NULL) { perror(in_name); fprintf(stderr, "Can't open for reading.\n"); return FAILURE; } /* While input lines exist, read them */ while (fgets(buff, sizeof buff, F)) { /* Is this an 'include' line? */ if (sscanf(buff, "include%*[ \t]%[^ \t\n]", name) == 1) { /* Process the file and try to fix include the file */ if (process_file(name, outfile) == FAILURE) return FAILURE; continue; } /* Otherwise just copy to the output */ fprintf(outfile, buff); } /* Close the input file and return success */ (void)fclose(F); return SUCCESS; } static void usage() { fprintf(stderr, "%s [-i inputfile] [-o outputfile]\n", progname); exit(1); } main(argc, argv) int argc; char *argv[]; { FILE *F; char *in_name; char *out_name; int i; /* Set defaults. */ progname = argv[0]; in_name = "Makefile"; out_name = "makefile"; /* Parse flags. */ while ((i = getopt(argc, argv, "i:o:")) != EOF) switch (i) { default: /* Error in command arguments */ usage(); /* NOTREACHED */ case 'i': /* Set input filename */ in_name = optarg; break; case 'o': /* Set output filename */ out_name = optarg; break; } /* Parse the parameters. */ argc -= optind; argv += optind; if (*argv) usage(); /* Open the output filename */ if ((F = fopen(out_name, "w")) == NULL) { perror(out_name); fprintf(stderr, "Can't open for writing.\n"); exit(1); } /* Run. */ i = process_file(in_name, F); /* Close the output file */ (void)fclose(F); exit(i); /* NOTREACHED */ }
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.