double cash;
char * msg;
char * str;
-str = new char[strlen(c)];
+str = new char[strlen(c) + 1];
+
+strncpy(str, c, strlen(c));
+str[strlen(c)] = 0;
-strcpy(str, c);
msg = strchr(str, ':');
if (msg)
return ss;
}
//-----------------------------------------------------------------------------
+time_t ParseCreditExpire(const char * str)
+{
+struct tm brokenTime;
+
+brokenTime.tm_wday = 0;
+brokenTime.tm_yday = 0;
+brokenTime.tm_isdst = 0;
+brokenTime.tm_hour = 0;
+brokenTime.tm_min = 0;
+brokenTime.tm_sec = 0;
+
+stg_strptime(str, "%Y-%m-%d", &brokenTime);
+
+return stg_timegm(&brokenTime);
+}
+//-----------------------------------------------------------------------------
void ParseAnyString(const char * c, string * msg, const char * enc)
{
iconv_t cd;
strcat(r, str);
}
+if (!req->creditExpire.res_empty())
+ {
+ sprintf(str, "<creditExpire value=\"%ld\"/>\n", req->creditExpire.const_data());
+ strcat(r, str);
+ }
+
if (!req->prepaidTraff.res_empty())
{
sprintf(str, "<FreeMb value=\"%f\"/>\n", req->prepaidTraff.const_data());
RESETABLE<string> t1;
int missedOptionArg = false;
-const char * short_options_get = "s:p:a:w:u:crtmodieNADLPGISO";
+const char * short_options_get = "s:p:a:w:u:crtmodieNADLPGISOE";
int option_index = -1;
while (1)
req.credit = 1;
break;
+ case 'E': //credit expire
+ req.creditExpire = 1;
+ break;
+
case 'd': //down
req.down = 1;
break;
RESETABLE<string> t1;
-const char * short_options_set = "s:p:a:w:u:c:r:t:m:o:d:i:e:v:nlN:A:D:L:P:G:I:S:O:";
+const char * short_options_set = "s:p:a:w:u:c:r:t:m:o:d:i:e:v:nlN:A:D:L:P:G:I:S:O:E:";
int missedOptionArg = false;
req.credit = ParseCredit(optarg);
break;
+ case 'E': //credit expire
+ req.creditExpire = ParseCreditExpire(optarg);
+ break;
+
case 'd': //down
req.down = ParseDownPassive(optarg);
break;
break;
case 'A': //nAme
- ParseAnyString(optarg, &str, "koi8-r");
+ ParseAnyString(optarg, &str, "koi8-ru");
req.name = str;
break;