This is splithelp.c in view mode; [Download] [Up]
/*
* splithelp.c -- turn nroff output of logoman into help files.
*
* For this to work, there must be no em dashes in the logoman source
* except on lines which name primitives. Also, the file which is
* nroffed isn't the actual logoman, but a version which has been edited
* by the makehelp shell script (which also runs this program) to change
* what's where. The algorithm is that a primitive description starts
* with a line with a dash (represented here as a tilde) and continues
* until a line with a nonspace, nonempty first character.
*/
#include <stdio.h>
int memb(ch,str)
register char ch;
register char *str;
{
register char ch1;
while (ch1 = *str++)
if (ch == ch1)
return(1);
return(0);
}
main(argc,argv)
char **argv;
{
FILE *ip, *op;
int writing = 0; /* nonzero when writing a file */
int empty = 0; /* nonzero after an empty line */
register char *cp;
char line[100];
char primitive[30];
if ((ip = fopen(argv[1],"r")) == NULL) {
printf("Splithelp: Can't read input.\n");
exit(1);
}
while (fgets(line,100,ip)) {
if (memb('~',line)) { /* start new file */
puts("Made it here.\n");
empty = 0;
if (writing)
fclose(op);
sscanf(line,"%s",primitive);
if (strlen(primitive) > 9) {
for (cp = line; *cp && *cp!=':'; cp++) ;
sscanf(cp+2,"%s",primitive);
}
if ((op = fopen(primitive,"w")) == NULL) {
printf("Splithelp: Can't write output.\n");
exit(1);
}
for (cp = line; *cp != '~'; cp++) ;
*cp++ = '-';
*cp = '-';
fprintf(op,"%s",line);
writing++;
} else if (line[0] == '\n') {
empty++;
} else if (writing && line[0]==' ') {
puts("Made it here.\n");
if (empty) fprintf(op,"\n");
empty = 0;
fprintf(op,"%s",line);
} else if (writing) {
puts("Made it here.\n");
fclose(op);
writing = 0;
}
}
if (writing) fclose(op);
}
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.