View | Details | Raw Unified | Return to bug 62767
Collapse All | Expand All

(-)file_not_specified_in_diff (-3 / +14 lines)
Line  Link Here
0
-- wv/field.c
0
++ wv/field.c
Lines 48-67 Link Here
48
    return (ret);
48
    return (ret);
49
}
49
}
50
50
51
#define TIMESTR_SIZE 4096
52
51
int
53
int
52
wvHandleDateTimePicture (char *retstring, size_t max, char *token,
54
wvHandleDateTimePicture (char *retstring, size_t max, char *token,
53
			 time_t * mytime)
55
			 time_t * mytime)
54
{
56
{
55
    int no;
57
    int no;
58
    int consumed = 0;
56
    struct tm *current;
59
    struct tm *current;
57
    char timestr[4096];
60
    char timestr[TIMESTR_SIZE];
58
    char temp[64];
61
    char temp[64];
59
    timestr[0] = '\0';
62
    timestr[0] = '\0';
60
63
61
    if (!token)
64
    if (!token)
62
	return (0);
65
	return (0);
63
    current = localtime (mytime);
66
    current = localtime (mytime);
64
    while (*token)
67
    /* the '11' is the max width of an integer (10 digits for '4 billion') + nul */
68
    while (*token && (consumed < (TIMESTR_SIZE - 11)))
65
      {
69
      {
66
	  switch (*token)
70
	  switch (*token)
67
	    {
71
	    {
Lines 87-101 Link Here
87
		  case 1:
91
		  case 1:
88
		      sprintf (temp, "%d", current->tm_mon+1);
92
		      sprintf (temp, "%d", current->tm_mon+1);
89
		      strcat (timestr, temp);
93
		      strcat (timestr, temp);
94
		      consumed += strlen (temp);
90
		      break;
95
		      break;
91
		  case 2:
96
		  case 2:
92
		      strcat (timestr, "%m");
97
		      strcat (timestr, "%m");
98
		      consumed += 2;
93
		      break;
99
		      break;
94
		  case 3:
100
		  case 3:
95
		      strcat (timestr, "%b");
101
		      strcat (timestr, "%b");
102
		      consumed += 2;
96
		      break;
103
		      break;
97
		  default:
104
		  default:
98
		      strcat (timestr, "%B");
105
		      strcat (timestr, "%B");
106
		      consumed += 2;
99
		      break;
107
		      break;
100
		  }
108
		  }
101
		break;
109
		break;
Lines 154-162 Link Here
154
		  case 1:
162
		  case 1:
155
		      sprintf (temp, "%d", current->tm_hour % 12);
163
		      sprintf (temp, "%d", current->tm_hour % 12);
156
		      strcat (timestr, temp);
164
		      strcat (timestr, temp);
165
		      consumed += strlen (temp);
157
		      break;
166
		      break;
158
		  default:
167
		  default:
159
		      strcat (timestr, "%I");
168
		      strcat (timestr, "%I");
169
		      consumed += 2;
160
		      break;
170
		      break;
161
		  }
171
		  }
162
		break;
172
		break;
Lines 182-187 Link Here
182
		  case 1:
192
		  case 1:
183
		      sprintf (temp, "%d", current->tm_min);
193
		      sprintf (temp, "%d", current->tm_min);
184
		      strcat (timestr, temp);
194
		      strcat (timestr, temp);
195
		      consumed += strlen (temp);
185
		      break;
196
		      break;
186
		  default:
197
		  default:
187
		      strcat (timestr, "%M");
198
		      strcat (timestr, "%M");

Return to bug 62767