ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/rxvt-unicode/src/xdefaults.C
(Generate patch)

Comparing rxvt-unicode/src/xdefaults.C (file contents):
Revision 1.15 by pcg, Wed Mar 3 04:07:52 2004 UTC vs.
Revision 1.16 by pcg, Thu Mar 4 00:59:10 2004 UTC

1/*--------------------------------*-C-*---------------------------------* 1/*--------------------------------*-C-*---------------------------------*
2 * File: xdefaults.c 2 * File: xdefaults.c
3 *----------------------------------------------------------------------* 3 *----------------------------------------------------------------------*
4 * $Id: xdefaults.C,v 1.15 2004/03/03 04:07:52 pcg Exp $ 4 * $Id: xdefaults.C,v 1.16 2004/03/04 00:59:10 pcg Exp $
5 * 5 *
6 * All portions of code are copyright by their respective author/s. 6 * All portions of code are copyright by their respective author/s.
7 * Copyright (c) 1994 Robert Nation <nation@rocket.sanders.lockheed.com> 7 * Copyright (c) 1994 Robert Nation <nation@rocket.sanders.lockheed.com>
8 * - original version 8 * - original version
9 * Copyright (c) 1997,1998 mj olesen <olesen@me.queensu.ca> 9 * Copyright (c) 1997,1998 mj olesen <olesen@me.queensu.ca>
670 * the matching algorithm used for memory-save fake resources 670 * the matching algorithm used for memory-save fake resources
671 */ 671 */
672void 672void
673rxvt_term::get_xdefaults (FILE *stream, const char *name) 673rxvt_term::get_xdefaults (FILE *stream, const char *name)
674{ 674{
675 unsigned int len; 675 unsigned int len;
676 char *str, buffer[256]; 676 char *str, buffer[256];
677 677
678 if (stream == NULL) 678 if (stream == NULL)
679 return; 679 return;
680 len = STRLEN (name); 680 len = STRLEN (name);
681 while ((str = fgets (buffer, sizeof (buffer), stream)) != NULL) 681 while ((str = fgets (buffer, sizeof (buffer), stream)) != NULL)
701 continue; 701 continue;
702 n = STRLEN (kw); 702 n = STRLEN (kw);
703 if (str[n] == ':' && rxvt_Str_match (str, kw)) 703 if (str[n] == ':' && rxvt_Str_match (str, kw))
704 { 704 {
705 /* skip `keyword:' */ 705 /* skip `keyword:' */
706 str += (n + 1); 706 str += n + 1;
707 rxvt_Str_trim (str); 707 rxvt_Str_trim (str);
708 n = STRLEN (str); 708 n = STRLEN (str);
709 if (n && rs[optList[entry].doff] == NULL) 709 if (n && rs[optList[entry].doff] == NULL)
710 { 710 {
711 /* not already set */ 711 /* not already set */
712 int s; 712 int s;
713 char *p = (char *)rxvt_malloc ((n + 1) * sizeof (char)); 713 char *p = 0;
714 714
715 for (int o = 0;;)
716 {
717 p = (char *)rxvt_realloc (p, o + n + 1);
715 STRCPY (p, str); 718 MEMCPY (p + o, str, n);
719 o += n;
720 p[o] = 0;
721
722 if (o == 0 || p[o - 1] != '\\') // continuation line
723 break;
724
725 o--; // eat "\"
726
727 if ((str = fgets (buffer, sizeof (buffer), stream)) == NULL)
728 break;
729
730 rxvt_Str_trim (str);
731 n = STRLEN (str);
732 }
733
716 rs[optList[entry].doff] = p; 734 rs[optList[entry].doff] = p;
717 if (optList_isBool (entry)) 735 if (optList_isBool (entry))
718 { 736 {
719 s = STRCASECMP (str, "TRUE") == 0 737 s = STRCASECMP (str, "TRUE") == 0
720 || STRCASECMP (str, "YES") == 0 738 || STRCASECMP (str, "YES") == 0

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines