summaryrefslogtreecommitdiffstats
path: root/games/fortune/strfile
diff options
context:
space:
mode:
Diffstat (limited to 'games/fortune/strfile')
-rw-r--r--games/fortune/strfile/strfile.86
-rw-r--r--games/fortune/strfile/strfile.c165
-rw-r--r--games/fortune/strfile/strfile.h6
3 files changed, 79 insertions, 98 deletions
diff --git a/games/fortune/strfile/strfile.8 b/games/fortune/strfile/strfile.8
index 5c2d642..26de0d7 100644
--- a/games/fortune/strfile/strfile.8
+++ b/games/fortune/strfile/strfile.8
@@ -13,11 +13,7 @@
.\" 2. Redistributions in binary form must reproduce the above copyright
.\" notice, this list of conditions and the following disclaimer in the
.\" documentation and/or other materials provided with the distribution.
-.\" 3. All advertising materials mentioning features or use of this software
-.\" must display the following acknowledgement:
-.\" This product includes software developed by the University of
-.\" California, Berkeley and its contributors.
-.\" 4. Neither the name of the University nor the names of its contributors
+.\" 3. Neither the name of the University nor the names of its contributors
.\" may be used to endorse or promote products derived from this software
.\" without specific prior written permission.
.\"
diff --git a/games/fortune/strfile/strfile.c b/games/fortune/strfile/strfile.c
index dd254a3..c88d997 100644
--- a/games/fortune/strfile/strfile.c
+++ b/games/fortune/strfile/strfile.c
@@ -13,11 +13,7 @@
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
+ * 3. Neither the name of the University nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
@@ -48,16 +44,18 @@ static const char sccsid[] = "@(#)strfile.c 8.1 (Berkeley) 5/31/93";
#include <sys/cdefs.h>
__FBSDID("$FreeBSD$");
-# include <sys/param.h>
-# include <sys/endian.h>
-# include <stdio.h>
-# include <stdlib.h>
-# include <ctype.h>
-# include <string.h>
-# include <time.h>
-# include <locale.h>
-# include <unistd.h>
-# include "strfile.h"
+#include <sys/param.h>
+#include <sys/endian.h>
+#include <ctype.h>
+#include <locale.h>
+#include <stdbool.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <time.h>
+#include <unistd.h>
+
+#include "strfile.h"
/*
* This program takes a file composed of strings separated by
@@ -83,26 +81,19 @@ __FBSDID("$FreeBSD$");
* Added ordering options.
*/
-# define TRUE 1
-# define FALSE 0
-
-# define STORING_PTRS (Oflag || Rflag)
-# define CHUNKSIZE 512
+#define STORING_PTRS (Oflag || Rflag)
+#define CHUNKSIZE 512
-# define ALLOC(ptr,sz) { \
+#define ALLOC(ptr, sz) do { \
if (ptr == NULL) \
- ptr = malloc(CHUNKSIZE * sizeof *ptr); \
+ ptr = malloc(CHUNKSIZE * sizeof(*ptr)); \
else if (((sz) + 1) % CHUNKSIZE == 0) \
- ptr = realloc(ptr, ((sz) + CHUNKSIZE) * sizeof *ptr); \
+ ptr = realloc(ptr, ((sz) + CHUNKSIZE) * sizeof(*ptr)); \
if (ptr == NULL) { \
fprintf(stderr, "out of space\n"); \
exit(1); \
} \
- }
-
-#ifdef NO_VOID
-# define void char
-#endif
+ } while (0)
typedef struct {
int first;
@@ -113,12 +104,12 @@ static char *Infile = NULL, /* input file name */
Outfile[MAXPATHLEN] = "", /* output file name */
Delimch = '%'; /* delimiting character */
-static int Cflag = FALSE; /* embedded comments */
-static int Sflag = FALSE; /* silent run flag */
-static int Oflag = FALSE; /* ordering flag */
-static int Iflag = FALSE; /* ignore case flag */
-static int Rflag = FALSE; /* randomize order flag */
-static int Xflag = FALSE; /* set rotated bit */
+static int Cflag = false; /* embedded comments */
+static int Sflag = false; /* silent run flag */
+static int Oflag = false; /* ordering flag */
+static int Iflag = false; /* ignore case flag */
+static int Rflag = false; /* randomize order flag */
+static int Xflag = false; /* set rotated bit */
static uint32_t Num_pts = 0; /* number of pointers/strings */
static off_t *Seekpts;
@@ -129,13 +120,13 @@ static STRFILE Tbl; /* statistics table */
static STR *Firstch; /* first chars of each string */
-static void add_offset(FILE *, off_t);
-static int cmp_str(const void *, const void *);
-static int stable_collate_range_cmp(int, int);
-static void do_order(void);
-static void getargs(int, char **);
-static void randomize(void);
-static void usage(void);
+static void add_offset(FILE *, off_t);
+static int cmp_str(const void *, const void *);
+static int stable_collate_range_cmp(int, int);
+static void do_order(void);
+static void getargs(int, char **);
+static void randomize(void);
+static void usage(void);
/*
* main:
@@ -149,17 +140,16 @@ static void usage(void);
int
main(int ac, char *av[])
{
- char *sp, dc;
- FILE *inf, *outf;
- off_t last_off, pos, *p;
- size_t length;
- int first;
- uint32_t cnt;
- char *nsp;
- STR *fp;
- static char string[257];
-
- (void) setlocale(LC_ALL, "");
+ char *sp, *nsp, dc;
+ FILE *inf, *outf;
+ off_t last_off, pos, *p;
+ size_t length;
+ int first;
+ uint32_t cnt;
+ STR *fp;
+ static char string[257];
+
+ setlocale(LC_ALL, "");
getargs(ac, av); /* evalute arguments */
dc = Delimch;
@@ -173,7 +163,7 @@ main(int ac, char *av[])
exit(1);
}
if (!STORING_PTRS)
- (void) fseek(outf, (long) sizeof Tbl, 0);
+ fseek(outf, (long)sizeof(Tbl), SEEK_SET);
/*
* Write the strings onto the file
@@ -212,7 +202,7 @@ main(int ac, char *av[])
else
fp->first = *nsp;
fp->pos = Seekpts[Num_pts - 1];
- first = FALSE;
+ first = false;
}
} while (sp != NULL);
@@ -220,7 +210,7 @@ main(int ac, char *av[])
* write the tables in
*/
- (void) fclose(inf);
+ fclose(inf);
Tbl.str_numstr = Num_pts - 1;
if (Cflag)
@@ -252,13 +242,13 @@ main(int ac, char *av[])
Tbl.str_longlen = htobe32(Tbl.str_longlen);
Tbl.str_shortlen = htobe32(Tbl.str_shortlen);
Tbl.str_flags = htobe32(Tbl.str_flags);
- (void) fwrite((char *) &Tbl, sizeof Tbl, 1, outf);
+ fwrite((char *)&Tbl, sizeof(Tbl), 1, outf);
if (STORING_PTRS) {
for (p = Seekpts, cnt = Num_pts; cnt--; ++p)
*p = htobe64(*p);
- (void) fwrite(Seekpts, sizeof *Seekpts, (size_t) Num_pts, outf);
+ fwrite(Seekpts, sizeof(*Seekpts), (size_t)Num_pts, outf);
}
- (void) fclose(outf);
+ fclose(outf);
exit(0);
}
@@ -268,7 +258,7 @@ main(int ac, char *av[])
void
getargs(int argc, char **argv)
{
- int ch;
+ int ch;
while ((ch = getopt(argc, argv, "Cc:iorsx")) != -1)
switch(ch) {
@@ -306,22 +296,22 @@ getargs(int argc, char **argv)
if (*argv) {
Infile = *argv;
if (*++argv)
- (void) strcpy(Outfile, *argv);
+ strcpy(Outfile, *argv);
}
if (!Infile) {
puts("No input file name");
usage();
}
if (*Outfile == '\0') {
- (void) strcpy(Outfile, Infile);
- (void) strcat(Outfile, ".dat");
+ strcpy(Outfile, Infile);
+ strcat(Outfile, ".dat");
}
}
void
usage(void)
{
- (void) fprintf(stderr,
+ fprintf(stderr,
"strfile [-Ciorsx] [-c char] source_file [output_file]\n");
exit(1);
}
@@ -337,7 +327,7 @@ add_offset(FILE *fp, off_t off)
if (!STORING_PTRS) {
beoff = htobe64(off);
- fwrite(&beoff, 1, sizeof beoff, fp);
+ fwrite(&beoff, 1, sizeof(beoff), fp);
} else {
ALLOC(Seekpts, Num_pts + 1);
Seekpts[Num_pts] = off;
@@ -353,19 +343,19 @@ void
do_order(void)
{
uint32_t i;
- off_t *lp;
- STR *fp;
+ off_t *lp;
+ STR *fp;
Sort_1 = fopen(Infile, "r");
Sort_2 = fopen(Infile, "r");
- qsort(Firstch, (size_t) Tbl.str_numstr, sizeof *Firstch, cmp_str);
+ qsort(Firstch, (size_t)Tbl.str_numstr, sizeof(*Firstch), cmp_str);
i = Tbl.str_numstr;
lp = Seekpts;
fp = Firstch;
while (i--)
*lp++ = fp++->pos;
- (void) fclose(Sort_1);
- (void) fclose(Sort_2);
+ fclose(Sort_1);
+ fclose(Sort_2);
Tbl.str_flags |= STR_ORDERED;
}
@@ -389,27 +379,25 @@ stable_collate_range_cmp(int c1, int c2)
int
cmp_str(const void *s1, const void *s2)
{
- const STR *p1, *p2;
- int c1, c2;
- int n1, n2;
- int r;
-
-# define SET_N(nf,ch) (nf = (ch == '\n'))
-# define IS_END(ch,nf) (ch == EOF || (ch == (unsigned char) Delimch && nf))
-
- p1 = (const STR *) s1;
- p2 = (const STR *) s2;
-
- c1 = (unsigned char) p1->first;
- c2 = (unsigned char) p2->first;
+ const STR *p1, *p2;
+ int c1, c2, n1, n2, r;
+
+#define SET_N(nf,ch) (nf = (ch == '\n'))
+#define IS_END(ch,nf) (ch == EOF || (ch == (unsigned char)Delimch && nf))
+
+ p1 = (const STR *)s1;
+ p2 = (const STR *)s2;
+
+ c1 = (unsigned char)p1->first;
+ c2 = (unsigned char)p2->first;
if ((r = stable_collate_range_cmp(c1, c2)) != 0)
return (r);
- (void) fseeko(Sort_1, p1->pos, 0);
- (void) fseeko(Sort_2, p2->pos, 0);
+ fseeko(Sort_1, p1->pos, SEEK_SET);
+ fseeko(Sort_2, p2->pos, SEEK_SET);
- n1 = FALSE;
- n2 = FALSE;
+ n1 = false;
+ n2 = false;
while (!isalnum(c1 = getc(Sort_1)) && c1 != '\0' && c1 != EOF)
SET_N(n1, c1);
while (!isalnum(c2 = getc(Sort_2)) && c2 != '\0' && c2 != EOF)
@@ -433,6 +421,7 @@ cmp_str(const void *s1, const void *s2)
c1 = 0;
if (IS_END(c2, n2))
c2 = 0;
+
return (stable_collate_range_cmp(c1, c2));
}
@@ -446,8 +435,8 @@ void
randomize(void)
{
uint32_t cnt, i;
- off_t tmp;
- off_t *sp;
+ off_t tmp;
+ off_t *sp;
#if __FreeBSD_version < 800041
srandomdev();
diff --git a/games/fortune/strfile/strfile.h b/games/fortune/strfile/strfile.h
index 4726024..5d4f875 100644
--- a/games/fortune/strfile/strfile.h
+++ b/games/fortune/strfile/strfile.h
@@ -13,11 +13,7 @@
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
+ * 3. Neither the name of the University nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
OpenPOWER on IntegriCloud