static char sccsid
[] = "@(#)gename.c 5.5 (Berkeley) %G%";
gename(pre
, sys
, grade
, file
)
char pre
, *sys
, grade
, *file
;
sprintf(file
,"%c.%.*s%c%.*s", pre
, SYSNSIZE
, sys
, grade
, SEQLEN
, sqnum
);
DEBUG(4, "file - %s\n", file
);
* get next sequence number
* the alphabet can be anything, but if it's not in ascii order,
* sequence ordering is not preserved
"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
static char *lastchar
= NULL
;
if (lastchar
== NULL
|| (snum
[SEQLEN
-1] = *(lastchar
++)) == '\0') {
for (i
= 0; i
< SLOCKTRIES
; i
++) {
if (!ulockf(SEQLOCK
, SLOCKTIME
))
logent(SEQLOCK
, "CAN NOT LOCK");
alphalen
= strlen(alphabet
);
srand((int)time((time_t *)0));
*snum
++ = alphabet
[rand() % alphalen
];
if ((fd
= open(SEQFILE
, 2)) >= 0) {
alphalen
= strlen(alphabet
);
/* initialize rand() for possible use */
srand((int)time((time_t *)0));
/* increment the penultimate character */
for (i
= SEQLEN
- 2; i
>= 0; --i
) {
if ((p
= index(alphabet
, snum
[i
])) == NULL
) {
p
= &alphabet
[rand() % alphalen
];
DEBUG(6, "bad seqf: %s\n", snum
);
if (++p
< &alphabet
[alphalen
]) {
snum
[i
] = alphabet
[0]; /* continue */
snum
[SEQLEN
-1] = alphabet
[0];
for (i
= 0; i
< SEQLEN
; i
++)
if ((fd
= creat(SEQFILE
, 0666)) < 0)