|
Lines 427-453
Link Here
|
| 427 |
return 1; |
427 |
return 1; |
| 428 |
case FILE_STRING: |
428 |
case FILE_STRING: |
| 429 |
{ |
429 |
{ |
| 430 |
int n; |
430 |
size_t len; |
| 431 |
|
431 |
|
| 432 |
/* Null terminate and eat *trailing* return */ |
432 |
/* Null terminate and eat *trailing* return */ |
| 433 |
p->s[sizeof(p->s) - 1] = '\0'; |
433 |
p->s[sizeof(p->s) - 1] = '\0'; |
| 434 |
n = strlen(p->s) - 1; |
434 |
len = strlen(p->s); |
| 435 |
if (p->s[n] == '\n') |
435 |
if (len && p->s[len - 1] == '\n') |
| 436 |
p->s[n] = '\0'; |
436 |
p->s[len - 1] = '\0'; |
| 437 |
return 1; |
437 |
return 1; |
| 438 |
} |
438 |
} |
| 439 |
case FILE_PSTRING: |
439 |
case FILE_PSTRING: |
| 440 |
{ |
440 |
{ |
| 441 |
char *ptr1 = p->s, *ptr2 = ptr1 + 1; |
441 |
char *ptr1 = p->s, *ptr2 = ptr1 + 1; |
| 442 |
unsigned int n = *p->s; |
442 |
unsigned int n = *p->s; |
|
|
443 |
size_t len; |
| 443 |
if (n >= sizeof(p->s)) |
444 |
if (n >= sizeof(p->s)) |
| 444 |
n = sizeof(p->s) - 1; |
445 |
n = sizeof(p->s) - 1; |
| 445 |
while (n--) |
446 |
while (n--) |
| 446 |
*ptr1++ = *ptr2++; |
447 |
*ptr1++ = *ptr2++; |
| 447 |
*ptr1 = '\0'; |
448 |
*ptr1 = '\0'; |
| 448 |
n = strlen(p->s) - 1; |
449 |
len = strlen(p->s); |
| 449 |
if (p->s[n] == '\n') |
450 |
if (len && p->s[len - 1] == '\n') |
| 450 |
p->s[n] = '\0'; |
451 |
p->s[len - 1] = '\0'; |
| 451 |
return 1; |
452 |
return 1; |
| 452 |
} |
453 |
} |
| 453 |
case FILE_BESHORT: |
454 |
case FILE_BESHORT: |