mirror of
https://github.com/GnoConsortium/gno.git
synced 2024-10-12 07:23:41 +00:00
Initial checkin for mkso(8), a util for making the required .so
"links" for man pages.
This commit is contained in:
parent
2f69a2a3db
commit
dde31d4227
15
build.tools/makefile.mk
Normal file
15
build.tools/makefile.mk
Normal file
@ -0,0 +1,15 @@
|
||||
#
|
||||
# $Id: makefile.mk,v 1.1 1997/01/21 15:34:02 gdr Exp $
|
||||
#
|
||||
|
||||
TARGETS = mkso
|
||||
OBJS = mkso.o mkso.root
|
||||
CFLAGS +=
|
||||
|
||||
default: mkso
|
||||
|
||||
mkso: mkso.o
|
||||
$(CC) -o $@ $(LDFLAGS) $< $(LDLIBS)
|
||||
|
||||
clean clobber:
|
||||
$(RM) -f $(TARGETS) $(OBJS)
|
133
build.tools/mkso.c
Normal file
133
build.tools/mkso.c
Normal file
@ -0,0 +1,133 @@
|
||||
/*
|
||||
* $Id: mkso.c,v 1.1 1997/01/21 15:34:02 gdr Exp $
|
||||
*
|
||||
* Devin Reade, 1997.
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <errno.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#define BUFFERSIZE 1024
|
||||
#define DELIM " \t"
|
||||
|
||||
char *progname = NULL;
|
||||
int deleteFiles = 0;
|
||||
int verbose = 0;
|
||||
|
||||
void
|
||||
usage (void) {
|
||||
printf("This program is part of the GNO installation package.\n");
|
||||
printf("It creates .so (nroff source files) for the man package\n\n");
|
||||
printf("Usage: %s [-dhv] datafile\n", progname);
|
||||
printf("\t-h\tprint usage information\n");
|
||||
printf("\t-d\tdelete instead of create files (safe)\n");
|
||||
printf("\t-v\tverbose operation\n");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
int main(int argc, char **argv) {
|
||||
static char dataBuffer[BUFFERSIZE];
|
||||
static char magicBuffer[BUFFERSIZE];
|
||||
FILE *fp, *outfp;
|
||||
char *p, *file, *new, *org;
|
||||
int line = 0;
|
||||
int c;
|
||||
char *magic = ".\\\" This file is auto-generated by mkso.\n";
|
||||
|
||||
progname = argv[0];
|
||||
while ((c = getopt(argc, argv, "dhv")) != EOF) {
|
||||
switch (c) {
|
||||
case 'd':
|
||||
deleteFiles = 1;
|
||||
break;
|
||||
|
||||
case 'v':
|
||||
verbose = 1;
|
||||
break;
|
||||
|
||||
case 'h':
|
||||
default:
|
||||
usage();
|
||||
}
|
||||
}
|
||||
if (argc - optind != 1) {
|
||||
usage();
|
||||
} else {
|
||||
file = argv[optind];
|
||||
}
|
||||
|
||||
if ((fp = fopen(file, "r")) == NULL) {
|
||||
perror("couldn't open data file");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
while (fgets(dataBuffer, BUFFERSIZE, fp) != NULL) {
|
||||
line++;
|
||||
|
||||
/* eliminate comments and newlines -- get file names */
|
||||
if ((p = strchr(dataBuffer, '#')) != NULL ||
|
||||
(p = strchr(dataBuffer, '\n')) != NULL) {
|
||||
*p = '\0';
|
||||
}
|
||||
if ((org = strtok(dataBuffer, DELIM)) == NULL) {
|
||||
continue;
|
||||
}
|
||||
if ((new = strtok(NULL, DELIM)) == NULL) {
|
||||
fprintf(stderr, "missing new file name at line %d of %s", line, file);
|
||||
continue;
|
||||
}
|
||||
|
||||
if (deleteFiles) {
|
||||
if ((outfp = fopen(new, "r")) == NULL) {
|
||||
/* file doesn't exist -- doesn't need deleting */
|
||||
continue;
|
||||
}
|
||||
|
||||
/* look for magic string on second line */
|
||||
if (fgets(magicBuffer, BUFFERSIZE, outfp) == NULL ||
|
||||
fgets(magicBuffer, BUFFERSIZE, outfp) == NULL ||
|
||||
strcmp(magicBuffer, magic)) {
|
||||
printf("bad magic for %s -- not deleted\n", new);
|
||||
} else {
|
||||
if (verbose) {
|
||||
printf("rm -f %s\n", new);
|
||||
}
|
||||
unlink(new);
|
||||
}
|
||||
} else {
|
||||
|
||||
if (access(new, F_OK) == 0) {
|
||||
if (verbose) {
|
||||
printf("file %s already exists -- skipping\n", new);
|
||||
}
|
||||
continue;
|
||||
}
|
||||
|
||||
if (verbose) {
|
||||
printf("linking %s to %s\n", new, org);
|
||||
}
|
||||
|
||||
|
||||
if ((outfp = fopen(new, "w")) == NULL) {
|
||||
fprintf(stderr,
|
||||
"couldn't open \"%s\" from line %d: %s: file skipped\n",
|
||||
new, line, strerror(errno));
|
||||
continue;
|
||||
}
|
||||
fprintf(outfp, ".so %s\n", org);
|
||||
fprintf(outfp, magic);
|
||||
fclose(outfp);
|
||||
}
|
||||
}
|
||||
|
||||
if (ferror(fp)) {
|
||||
perror("error on reading data file");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
fclose(fp);
|
||||
return 0;
|
||||
}
|
133
sbin/mkso/mkso.c
Normal file
133
sbin/mkso/mkso.c
Normal file
@ -0,0 +1,133 @@
|
||||
/*
|
||||
* $Id: mkso.c,v 1.1 1997/01/21 15:34:02 gdr Exp $
|
||||
*
|
||||
* Devin Reade, 1997.
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <errno.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#define BUFFERSIZE 1024
|
||||
#define DELIM " \t"
|
||||
|
||||
char *progname = NULL;
|
||||
int deleteFiles = 0;
|
||||
int verbose = 0;
|
||||
|
||||
void
|
||||
usage (void) {
|
||||
printf("This program is part of the GNO installation package.\n");
|
||||
printf("It creates .so (nroff source files) for the man package\n\n");
|
||||
printf("Usage: %s [-dhv] datafile\n", progname);
|
||||
printf("\t-h\tprint usage information\n");
|
||||
printf("\t-d\tdelete instead of create files (safe)\n");
|
||||
printf("\t-v\tverbose operation\n");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
int main(int argc, char **argv) {
|
||||
static char dataBuffer[BUFFERSIZE];
|
||||
static char magicBuffer[BUFFERSIZE];
|
||||
FILE *fp, *outfp;
|
||||
char *p, *file, *new, *org;
|
||||
int line = 0;
|
||||
int c;
|
||||
char *magic = ".\\\" This file is auto-generated by mkso.\n";
|
||||
|
||||
progname = argv[0];
|
||||
while ((c = getopt(argc, argv, "dhv")) != EOF) {
|
||||
switch (c) {
|
||||
case 'd':
|
||||
deleteFiles = 1;
|
||||
break;
|
||||
|
||||
case 'v':
|
||||
verbose = 1;
|
||||
break;
|
||||
|
||||
case 'h':
|
||||
default:
|
||||
usage();
|
||||
}
|
||||
}
|
||||
if (argc - optind != 1) {
|
||||
usage();
|
||||
} else {
|
||||
file = argv[optind];
|
||||
}
|
||||
|
||||
if ((fp = fopen(file, "r")) == NULL) {
|
||||
perror("couldn't open data file");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
while (fgets(dataBuffer, BUFFERSIZE, fp) != NULL) {
|
||||
line++;
|
||||
|
||||
/* eliminate comments and newlines -- get file names */
|
||||
if ((p = strchr(dataBuffer, '#')) != NULL ||
|
||||
(p = strchr(dataBuffer, '\n')) != NULL) {
|
||||
*p = '\0';
|
||||
}
|
||||
if ((org = strtok(dataBuffer, DELIM)) == NULL) {
|
||||
continue;
|
||||
}
|
||||
if ((new = strtok(NULL, DELIM)) == NULL) {
|
||||
fprintf(stderr, "missing new file name at line %d of %s", line, file);
|
||||
continue;
|
||||
}
|
||||
|
||||
if (deleteFiles) {
|
||||
if ((outfp = fopen(new, "r")) == NULL) {
|
||||
/* file doesn't exist -- doesn't need deleting */
|
||||
continue;
|
||||
}
|
||||
|
||||
/* look for magic string on second line */
|
||||
if (fgets(magicBuffer, BUFFERSIZE, outfp) == NULL ||
|
||||
fgets(magicBuffer, BUFFERSIZE, outfp) == NULL ||
|
||||
strcmp(magicBuffer, magic)) {
|
||||
printf("bad magic for %s -- not deleted\n", new);
|
||||
} else {
|
||||
if (verbose) {
|
||||
printf("rm -f %s\n", new);
|
||||
}
|
||||
unlink(new);
|
||||
}
|
||||
} else {
|
||||
|
||||
if (access(new, F_OK) == 0) {
|
||||
if (verbose) {
|
||||
printf("file %s already exists -- skipping\n", new);
|
||||
}
|
||||
continue;
|
||||
}
|
||||
|
||||
if (verbose) {
|
||||
printf("linking %s to %s\n", new, org);
|
||||
}
|
||||
|
||||
|
||||
if ((outfp = fopen(new, "w")) == NULL) {
|
||||
fprintf(stderr,
|
||||
"couldn't open \"%s\" from line %d: %s: file skipped\n",
|
||||
new, line, strerror(errno));
|
||||
continue;
|
||||
}
|
||||
fprintf(outfp, ".so %s\n", org);
|
||||
fprintf(outfp, magic);
|
||||
fclose(outfp);
|
||||
}
|
||||
}
|
||||
|
||||
if (ferror(fp)) {
|
||||
perror("error on reading data file");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
fclose(fp);
|
||||
return 0;
|
||||
}
|
Loading…
Reference in New Issue
Block a user