version 1.18, 2006/04/24 16:16:56 |
version 1.19, 2006/05/01 23:03:07 |
|
|
ident_line(FILE *fp) |
ident_line(FILE *fp) |
{ |
{ |
int c; |
int c; |
char *p, linebuf[1024]; |
BUF *bp; |
|
char *keyw; |
|
size_t len; |
|
|
p = linebuf; |
bp = rcs_buf_alloc(512, BUF_AUTOEXT); |
|
|
while ((c = getc(fp)) != VALDELIM) { |
while ((c = getc(fp)) != VALDELIM) { |
if (c == EOF && (feof(fp) | ferror(fp))) |
if (c == EOF && (feof(fp) | ferror(fp))) |
return; |
goto out; |
|
|
if (isalpha(c)) |
if (isalpha(c)) |
*(p++) = c; |
rcs_buf_putc(bp, c); |
else |
else |
return; |
goto out; |
} |
} |
|
|
*(p++) = VALDELIM; |
rcs_buf_putc(bp, VALDELIM); |
|
|
while ((c = getc(fp)) != KEYDELIM) { |
while ((c = getc(fp)) != KEYDELIM) { |
if (c == EOF && (feof(fp) | ferror(fp))) |
if (c == EOF && (feof(fp) | ferror(fp))) |
return; |
goto out; |
|
|
if (c == '\n') |
if (c == '\n') |
return; |
goto out; |
|
|
*(p++) = c; |
rcs_buf_putc(bp, c); |
} |
} |
|
|
if (p[-1] != ' ') |
len = rcs_buf_len(bp); |
return; |
if (rcs_buf_getc(bp, len - 1) != ' ') |
|
goto out; |
|
|
/* append trailing KEYDELIM */ |
/* append trailing KEYDELIM */ |
*(p++) = c; |
rcs_buf_putc(bp, c); |
*p = '\0'; |
rcs_buf_putc(bp, '\0'); |
|
keyw = rcs_buf_release(bp); |
|
bp = NULL; |
|
|
found++; |
found++; |
printf(" %c%s\n", KEYDELIM, linebuf); |
printf(" %c%s\n", KEYDELIM, keyw); |
|
|
return; |
out: |
|
if (bp != NULL) |
|
rcs_buf_free(bp); |
} |
} |
|
|
void |
void |