mirror of
https://gitea.psi.ch/ELOG/elog.git
synced 2026-09-08 17:13:56 +00:00
Added "logfile", fixed hightlighting problems, thanks to
Heiko.Schleit@mpi-hd.mpg.de SVN revision: 46
This commit is contained in:
parent
abd6456a0c
commit
242db73a58
161
elogd.c
161
elogd.c
@ -6,6 +6,10 @@
|
|||||||
Contents: Web server program for Electronic Logbook ELOG
|
Contents: Web server program for Electronic Logbook ELOG
|
||||||
|
|
||||||
$Log$
|
$Log$
|
||||||
|
Revision 1.15 2002/04/22 10:31:58 midas
|
||||||
|
Added "logfile", fixed hightlighting problems, thanks to
|
||||||
|
Heiko.Schleit@mpi-hd.mpg.de
|
||||||
|
|
||||||
Revision 1.14 2002/03/14 11:48:43 midas
|
Revision 1.14 2002/03/14 11:48:43 midas
|
||||||
Added .jpeg file extension
|
Added .jpeg file extension
|
||||||
|
|
||||||
@ -113,7 +117,8 @@ typedef int INT;
|
|||||||
#define EL_SUCCESS 1
|
#define EL_SUCCESS 1
|
||||||
#define EL_FIRST_MSG 2
|
#define EL_FIRST_MSG 2
|
||||||
#define EL_LAST_MSG 3
|
#define EL_LAST_MSG 3
|
||||||
#define EL_FILE_ERROR 4
|
#define EL_NO_MSG 4
|
||||||
|
#define EL_FILE_ERROR 5
|
||||||
|
|
||||||
#define WEB_BUFFER_SIZE 2000000
|
#define WEB_BUFFER_SIZE 2000000
|
||||||
|
|
||||||
@ -236,6 +241,7 @@ struct {
|
|||||||
};
|
};
|
||||||
|
|
||||||
int scan_attributes(char *logbook);
|
int scan_attributes(char *logbook);
|
||||||
|
void show_error(char *error);
|
||||||
|
|
||||||
/*---- Funcions from the MIDAS library -----------------------------*/
|
/*---- Funcions from the MIDAS library -----------------------------*/
|
||||||
|
|
||||||
@ -561,7 +567,7 @@ INT ss_daemon_init()
|
|||||||
|
|
||||||
setsid(); /* become session leader */
|
setsid(); /* become session leader */
|
||||||
chdir("/"); /* change working direcotry (not on NFS!) */
|
chdir("/"); /* change working direcotry (not on NFS!) */
|
||||||
umask(0); /* clear our file mode createion mask */
|
umask(0); /* clear our file mode creation mask */
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -624,7 +630,7 @@ int fh;
|
|||||||
while (*p && *p != '=' && *p != '\n')
|
while (*p && *p != '=' && *p != '\n')
|
||||||
*pstr++ = *p++;
|
*pstr++ = *p++;
|
||||||
*pstr-- = 0;
|
*pstr-- = 0;
|
||||||
while (pstr > str && (*pstr == ' ' || *pstr == '='))
|
while (pstr > str && (*pstr == ' ' || *pstr == '=' || *pstr == '\t'))
|
||||||
*pstr-- = 0;
|
*pstr-- = 0;
|
||||||
|
|
||||||
if (equal_ustring(str, param))
|
if (equal_ustring(str, param))
|
||||||
@ -632,13 +638,13 @@ int fh;
|
|||||||
if (*p == '=')
|
if (*p == '=')
|
||||||
{
|
{
|
||||||
p++;
|
p++;
|
||||||
while (*p == ' ')
|
while (*p == ' ' || *p == '\t')
|
||||||
p++;
|
p++;
|
||||||
pstr = str;
|
pstr = str;
|
||||||
while (*p && *p != '\n' && *p != '\r')
|
while (*p && *p != '\n' && *p != '\r')
|
||||||
*pstr++ = *p++;
|
*pstr++ = *p++;
|
||||||
*pstr-- = 0;
|
*pstr-- = 0;
|
||||||
while (*pstr == ' ')
|
while (*pstr == ' ' || *pstr == '\t')
|
||||||
*pstr-- = 0;
|
*pstr-- = 0;
|
||||||
|
|
||||||
strcpy(value, str);
|
strcpy(value, str);
|
||||||
@ -1344,7 +1350,7 @@ char *file_list;
|
|||||||
{
|
{
|
||||||
if (file_list)
|
if (file_list)
|
||||||
free(file_list);
|
free(file_list);
|
||||||
return EL_FILE_ERROR;
|
return EL_NO_MSG;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i=0,max=0 ; i<n ; i++)
|
for (i=0,max=0 ; i<n ; i++)
|
||||||
@ -1857,13 +1863,15 @@ INT el_retrieve(char *tag, char *date, char attr_list[MAX_N_ATTR][NAME_LENGTH],
|
|||||||
|
|
||||||
Function value:
|
Function value:
|
||||||
EL_SUCCESS Successful completion
|
EL_SUCCESS Successful completion
|
||||||
|
EL_NO_MSG No message in log
|
||||||
EL_LAST_MSG Last message in log
|
EL_LAST_MSG Last message in log
|
||||||
|
EL_FILE_ERROR Internal error
|
||||||
|
|
||||||
\********************************************************************/
|
\********************************************************************/
|
||||||
{
|
{
|
||||||
int i, size, fh, offset, search_status;
|
int i, size, fh, offset, search_status;
|
||||||
char str[256], *p;
|
char str[256], *p;
|
||||||
char message[TEXT_SIZE+100], thread[256], attachment_all[64*MAX_ATTACHMENTS];
|
char message[TEXT_SIZE+1000], thread[256], attachment_all[64*MAX_ATTACHMENTS];
|
||||||
|
|
||||||
if (tag[0])
|
if (tag[0])
|
||||||
{
|
{
|
||||||
@ -1974,7 +1982,8 @@ char message[TEXT_SIZE+100], thread[256], attachment_all[64*MAX_ATTACHMENTS];
|
|||||||
{
|
{
|
||||||
strncpy(text, p, *textsize-1);
|
strncpy(text, p, *textsize-1);
|
||||||
text[*textsize-1] = 0;
|
text[*textsize-1] = 0;
|
||||||
return -1;
|
show_error("Message too long to display. Please increase TEXT_SIZE and recompile elogd.");
|
||||||
|
return EL_FILE_ERROR;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -2215,6 +2224,38 @@ char date[80], text[TEXT_SIZE], orig_tag[80], reply_tag[80],
|
|||||||
|
|
||||||
/*------------------------------------------------------------------*/
|
/*------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
void logf(const char *format, ...)
|
||||||
|
{
|
||||||
|
char fname[2000];
|
||||||
|
va_list argptr;
|
||||||
|
char str[10000];
|
||||||
|
FILE* f;
|
||||||
|
time_t now;
|
||||||
|
char buf[256];
|
||||||
|
|
||||||
|
if (!getcfg("global", "logfile", fname))
|
||||||
|
return;
|
||||||
|
|
||||||
|
va_start(argptr, format);
|
||||||
|
vsprintf(str, (char *) format, argptr);
|
||||||
|
va_end(argptr);
|
||||||
|
|
||||||
|
f=fopen(fname,"a");
|
||||||
|
if (!f)
|
||||||
|
return;
|
||||||
|
|
||||||
|
now=time(0);
|
||||||
|
strftime(buf, sizeof(buf), "%d-%b-%Y %H:%M:%S", localtime(&now));
|
||||||
|
fprintf(f,"%s: %s",buf,str);
|
||||||
|
|
||||||
|
if (str[strlen(str)-1] != '\n')
|
||||||
|
fprintf(f,"\n");
|
||||||
|
|
||||||
|
fclose(f);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------------*/
|
||||||
|
|
||||||
void rsputs(const char *str)
|
void rsputs(const char *str)
|
||||||
{
|
{
|
||||||
if (strlen_retbuf + strlen(str) > sizeof(return_buffer))
|
if (strlen_retbuf + strlen(str) > sizeof(return_buffer))
|
||||||
@ -2290,10 +2331,15 @@ char *p, link[256];
|
|||||||
else
|
else
|
||||||
switch (str[i])
|
switch (str[i])
|
||||||
{
|
{
|
||||||
case 1 : strcat(return_buffer, "<"); j++; break;
|
|
||||||
case 2 : strcat(return_buffer, ">"); j++; break;
|
|
||||||
case '<': strcat(return_buffer, "<"); j+=4; break;
|
case '<': strcat(return_buffer, "<"); j+=4; break;
|
||||||
case '>': strcat(return_buffer, ">"); j+=4; break;
|
case '>': strcat(return_buffer, ">"); j+=4; break;
|
||||||
|
|
||||||
|
/* the translation for the search highliting */
|
||||||
|
case '\001' : strcat(return_buffer, "<"); j++; break;
|
||||||
|
case '\002' : strcat(return_buffer, ">"); j++; break;
|
||||||
|
case '\003' : strcat(return_buffer, "\""); j++; break;
|
||||||
|
case '\004' : strcat(return_buffer, " "); j++; break;
|
||||||
|
|
||||||
default: return_buffer[j++] = str[i];
|
default: return_buffer[j++] = str[i];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -2333,18 +2379,24 @@ void initparam()
|
|||||||
_text[0] = 0;
|
_text[0] = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void setparam(char *param, char *value)
|
int setparam(char *param, char *value)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
char str[256];
|
||||||
|
|
||||||
if (equal_ustring(param, "text"))
|
if (equal_ustring(param, "text"))
|
||||||
{
|
{
|
||||||
if (strlen(value) >= TEXT_SIZE)
|
if (strlen(value) >= TEXT_SIZE)
|
||||||
printf("Error: parameter value too big\n");
|
{
|
||||||
|
sprintf(str, "Error: Message text too big (%d bytes). Please increase TEXT_SIZE and recompile elogd\n",
|
||||||
|
strlen(value));
|
||||||
|
show_error(str);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
strncpy(_text, value, TEXT_SIZE);
|
strncpy(_text, value, TEXT_SIZE);
|
||||||
_text[TEXT_SIZE-1] = 0;
|
_text[TEXT_SIZE-1] = 0;
|
||||||
return;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i=0 ; i<MAX_PARAM ; i++)
|
for (i=0 ; i<MAX_PARAM ; i++)
|
||||||
@ -2356,7 +2408,10 @@ int i;
|
|||||||
strcpy(_param[i], param);
|
strcpy(_param[i], param);
|
||||||
|
|
||||||
if (strlen(value) >= VALUE_SIZE)
|
if (strlen(value) >= VALUE_SIZE)
|
||||||
printf("Error: parameter value too big\n");
|
{
|
||||||
|
show_error("Error: Parameter value too big. Please increase VALUE_SIZE and recompile elogd\n");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
strncpy(_value[i], value, VALUE_SIZE);
|
strncpy(_value[i], value, VALUE_SIZE);
|
||||||
_value[i][VALUE_SIZE-1] = 0;
|
_value[i][VALUE_SIZE-1] = 0;
|
||||||
@ -2365,6 +2420,8 @@ int i;
|
|||||||
{
|
{
|
||||||
printf("Error: parameter array too small\n");
|
printf("Error: parameter array too small\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
char *getparam(char *param)
|
char *getparam(char *param)
|
||||||
@ -2799,7 +2856,7 @@ int i;
|
|||||||
if (*getparam("full_name"))
|
if (*getparam("full_name"))
|
||||||
{
|
{
|
||||||
rsprintf("<td bgcolor=%s align=center>", gt("Title BGColor"));
|
rsprintf("<td bgcolor=%s align=center>", gt("Title BGColor"));
|
||||||
rsprintf("<font size=1 face=verdana,arial,helvetica,sans-serif color=%s><b> %s \"%s\"<b></font></td>\n",
|
rsprintf("<font size=3 face=verdana,arial,helvetica,sans-serif color=%s><b> %s \"%s\"<b></font></td>\n",
|
||||||
gt("Title fontcolor"), loc("Logged in as"), getparam("full_name"));
|
gt("Title fontcolor"), loc("Logged in as"), getparam("full_name"));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2947,6 +3004,13 @@ int i;
|
|||||||
case '&': rsprintf("&"); break;
|
case '&': rsprintf("&"); break;
|
||||||
case '\"': rsprintf("""); break;
|
case '\"': rsprintf("""); break;
|
||||||
case ' ': rsprintf(" "); break;
|
case ' ': rsprintf(" "); break;
|
||||||
|
|
||||||
|
/* the translation for the search highliting */
|
||||||
|
case '\001': rsprintf("<"); break;
|
||||||
|
case '\002': rsprintf(">"); break;
|
||||||
|
case '\003': rsprintf("\""); break;
|
||||||
|
case '\004': rsprintf(" "); break;
|
||||||
|
|
||||||
default: rsprintf("%c", text[i]);
|
default: rsprintf("%c", text[i]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -3258,7 +3322,7 @@ char str[80], date[80], attrib[MAX_N_ATTR][NAME_LENGTH],
|
|||||||
|
|
||||||
void show_elog_new(char *path, BOOL bedit)
|
void show_elog_new(char *path, BOOL bedit)
|
||||||
{
|
{
|
||||||
int i, n, n_attr, index, size, wrap, fh, length;
|
int i, n, n_attr, index, size, width, fh, length;
|
||||||
char str[1000], preset[1000], *p, star[80], comment[10000];
|
char str[1000], preset[1000], *p, star[80], comment[10000];
|
||||||
char list[MAX_N_ATTR][NAME_LENGTH], file_name[256], *buffer, format[256];
|
char list[MAX_N_ATTR][NAME_LENGTH], file_name[256], *buffer, format[256];
|
||||||
char date[80], attrib[MAX_N_ATTR][NAME_LENGTH], text[TEXT_SIZE],
|
char date[80], attrib[MAX_N_ATTR][NAME_LENGTH], text[TEXT_SIZE],
|
||||||
@ -3541,8 +3605,15 @@ time_t now;
|
|||||||
|
|
||||||
rsprintf("</td></tr>\n");
|
rsprintf("</td></tr>\n");
|
||||||
|
|
||||||
/* increased wrapping for replies (leave space for '> ' */
|
/* set textarea width */
|
||||||
wrap = (path && !bedit) ? 78 : 76;
|
width = 76;
|
||||||
|
|
||||||
|
if (getcfg(logbook, "Message width", str))
|
||||||
|
width = atoi(str);
|
||||||
|
|
||||||
|
/* increased wrapping width for replies (leave space for '> ' */
|
||||||
|
if (path && !bedit)
|
||||||
|
width += 2;
|
||||||
|
|
||||||
rsprintf("<tr><td colspan=2 bgcolor=#FFFFFF>\n");
|
rsprintf("<tr><td colspan=2 bgcolor=#FFFFFF>\n");
|
||||||
|
|
||||||
@ -3554,7 +3625,7 @@ time_t now;
|
|||||||
|
|
||||||
if (!getcfg(logbook, "Show text", str) || atoi(str) == 1)
|
if (!getcfg(logbook, "Show text", str) || atoi(str) == 1)
|
||||||
{
|
{
|
||||||
rsprintf("<textarea rows=20 cols=%d wrap=hard name=Text>", wrap);
|
rsprintf("<textarea rows=20 cols=%d wrap=hard name=Text>", width);
|
||||||
|
|
||||||
if (path)
|
if (path)
|
||||||
{
|
{
|
||||||
@ -4708,8 +4779,12 @@ FILE *f;
|
|||||||
pt += size;
|
pt += size;
|
||||||
|
|
||||||
/* add coloring 1st part */
|
/* add coloring 1st part */
|
||||||
if (equal_ustring(encoding, "plain"))
|
|
||||||
strcpy(pt2, "\001B style=\"color:black;background-color:#ffff66\"\002");
|
/* here: \001='<', \002='>', /003='"', and \004=' ' */
|
||||||
|
/* see also rsputs2(char* ) */
|
||||||
|
|
||||||
|
if (equal_ustring(encoding, "plain") || !full)
|
||||||
|
strcpy(pt2, "\001B\004style=\003color:black;background-color:#ffff66\003\002");
|
||||||
else
|
else
|
||||||
strcpy(pt2, "<B style=\"color:black;background-color:#ffff66\">");
|
strcpy(pt2, "<B style=\"color:black;background-color:#ffff66\">");
|
||||||
|
|
||||||
@ -4721,7 +4796,7 @@ FILE *f;
|
|||||||
pt += strlen(str);
|
pt += strlen(str);
|
||||||
|
|
||||||
/* add coloring 2nd part */
|
/* add coloring 2nd part */
|
||||||
if (equal_ustring(encoding, "plain"))
|
if (equal_ustring(encoding, "plain") || !full)
|
||||||
strcpy(pt2, "\001/B\002");
|
strcpy(pt2, "\001/B\002");
|
||||||
else
|
else
|
||||||
strcpy(pt2, "</B>");
|
strcpy(pt2, "</B>");
|
||||||
@ -4729,8 +4804,8 @@ FILE *f;
|
|||||||
}
|
}
|
||||||
} while (p != NULL);
|
} while (p != NULL);
|
||||||
|
|
||||||
strcpy(pt2, pt);
|
strcpy(pt2, pt);
|
||||||
strcpy(text, text2);
|
strcpy(text, text2);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* filter passed: display line */
|
/* filter passed: display line */
|
||||||
@ -4848,7 +4923,7 @@ FILE *f;
|
|||||||
{
|
{
|
||||||
strcpy(str, attachment[index]);
|
strcpy(str, attachment[index]);
|
||||||
str[13] = 0;
|
str[13] = 0;
|
||||||
sprintf(ref, "/%s/%s/%s", logbook_enc, str, attachment[index]+14);
|
sprintf(ref, "/%s/%s/%s", logbook_list[lindex], str, attachment[index]+14);
|
||||||
|
|
||||||
for (i=0 ; i<(int)strlen(attachment[index]) ; i++)
|
for (i=0 ; i<(int)strlen(attachment[index]) ; i++)
|
||||||
str[i] = toupper(attachment[index][i]);
|
str[i] = toupper(attachment[index][i]);
|
||||||
@ -4911,7 +4986,7 @@ FILE *f;
|
|||||||
rsprintf("</font></td></tr>\n");
|
rsprintf("</font></td></tr>\n");
|
||||||
|
|
||||||
}
|
}
|
||||||
else
|
else /* if (full) */
|
||||||
{
|
{
|
||||||
if (i_col % 2 == 0)
|
if (i_col % 2 == 0)
|
||||||
strcpy(col, gt("List bgcolor1"));
|
strcpy(col, gt("List bgcolor1"));
|
||||||
@ -4988,10 +5063,10 @@ FILE *f;
|
|||||||
}
|
}
|
||||||
str[i] = 0;
|
str[i] = 0;
|
||||||
|
|
||||||
if (equal_ustring(encoding, "HTML"))
|
/* always encode, not to rip apart HTML documents,
|
||||||
rsputs(str);
|
e.g. only the start of a table */
|
||||||
else
|
strencode(str);
|
||||||
strencode(str);
|
|
||||||
rsprintf(" </font></td>\n");
|
rsprintf(" </font></td>\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -5709,6 +5784,9 @@ FILE *f;
|
|||||||
rsprintf("Keep-Alive: timeout=60, max=10\r\n");
|
rsprintf("Keep-Alive: timeout=60, max=10\r\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* log activity */
|
||||||
|
logf("Logout of user \"%s\" from logbook \"%s\"",getparam("unm"),logbook);
|
||||||
|
|
||||||
/* delete user cookies */
|
/* delete user cookies */
|
||||||
rsprintf("Set-Cookie: upwd=; path=/%s; expires=Fri, 01 Jan 1983 00:00:00 GMT\r\n", logbook_enc, str);
|
rsprintf("Set-Cookie: upwd=; path=/%s; expires=Fri, 01 Jan 1983 00:00:00 GMT\r\n", logbook_enc, str);
|
||||||
rsprintf("Set-Cookie: unm=; path=/%s; expires=Fri, 01 Jan 1983 00:00:00 GMT\r\n", logbook_enc, str);
|
rsprintf("Set-Cookie: unm=; path=/%s; expires=Fri, 01 Jan 1983 00:00:00 GMT\r\n", logbook_enc, str);
|
||||||
@ -5911,6 +5989,8 @@ FILE *f;
|
|||||||
else
|
else
|
||||||
show_standard_header(logbook, path);
|
show_standard_header(logbook, path);
|
||||||
}
|
}
|
||||||
|
else if (msg_status == EL_FILE_ERROR)
|
||||||
|
return;
|
||||||
else
|
else
|
||||||
show_standard_header("", "");
|
show_standard_header("", "");
|
||||||
|
|
||||||
@ -6832,9 +6912,14 @@ struct tm *gmt;
|
|||||||
/* check if password correct */
|
/* check if password correct */
|
||||||
do_crypt(getparam("upassword"), enc_pwd);
|
do_crypt(getparam("upassword"), enc_pwd);
|
||||||
|
|
||||||
|
/* log logins */
|
||||||
|
logf("Login of user \"%s\" (attempt) for logbook \"%s\" ",getparam("uname"),logbook);
|
||||||
|
|
||||||
if (!check_user_password(logbook, getparam("uname"), enc_pwd, getparam("redir")))
|
if (!check_user_password(logbook, getparam("uname"), enc_pwd, getparam("redir")))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
logf("Login of user \"%s\" (successful)",getparam("uname"));
|
||||||
|
|
||||||
rsprintf("HTTP/1.1 302 Found\r\n");
|
rsprintf("HTTP/1.1 302 Found\r\n");
|
||||||
rsprintf("Server: ELOG HTTP %s\r\n", VERSION);
|
rsprintf("Server: ELOG HTTP %s\r\n", VERSION);
|
||||||
if (use_keepalive)
|
if (use_keepalive)
|
||||||
@ -6874,6 +6959,8 @@ struct tm *gmt;
|
|||||||
/* if password file given, check password and user name */
|
/* if password file given, check password and user name */
|
||||||
if (getcfg(logbook, "Password file", str))
|
if (getcfg(logbook, "Password file", str))
|
||||||
{
|
{
|
||||||
|
logf("Connection of user \"%s\"",getparam("unm"));
|
||||||
|
|
||||||
/* don't check password for submit, since cookie might have been expired during editing */
|
/* don't check password for submit, since cookie might have been expired during editing */
|
||||||
if (!equal_ustring(command, loc("Submit")))
|
if (!equal_ustring(command, loc("Submit")))
|
||||||
if (!check_user_password(logbook, getparam("unm"), getparam("upwd"), path))
|
if (!check_user_password(logbook, getparam("unm"), getparam("upwd"), path))
|
||||||
@ -7016,6 +7103,14 @@ int i, n;
|
|||||||
if (verbose)
|
if (verbose)
|
||||||
printf("decode_post: Found attachment %s\n", file_name);
|
printf("decode_post: Found attachment %s\n", file_name);
|
||||||
|
|
||||||
|
/* check filename for invalid characters */
|
||||||
|
if (strpbrk(file_name, ",;"))
|
||||||
|
{
|
||||||
|
sprintf(str, "Error: Filename \"%s\" contains invalid character", file_name);
|
||||||
|
show_error(str);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
/* find next boundary */
|
/* find next boundary */
|
||||||
ptmp = string;
|
ptmp = string;
|
||||||
do
|
do
|
||||||
@ -7069,7 +7164,9 @@ int i, n;
|
|||||||
while (*ptmp == '-' || *ptmp == '\n' || *ptmp == '\r')
|
while (*ptmp == '-' || *ptmp == '\n' || *ptmp == '\r')
|
||||||
*ptmp-- = 0;
|
*ptmp-- = 0;
|
||||||
}
|
}
|
||||||
setparam(item, p);
|
|
||||||
|
if (setparam(item, p) == 0)
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
while (*string == '-' || *string == '\n' || *string == '\r')
|
while (*string == '-' || *string == '\n' || *string == '\r')
|
||||||
@ -8024,7 +8121,7 @@ struct tm *tms;
|
|||||||
{
|
{
|
||||||
time(&now);
|
time(&now);
|
||||||
tms = localtime(&now);
|
tms = localtime(&now);
|
||||||
printf("Acutal date/time: %02d%02d%02d_%02d%02d%02d\n",
|
printf("Actual date/time: %02d%02d%02d_%02d%02d%02d\n",
|
||||||
tms->tm_year % 100, tms->tm_mon+1, tms->tm_mday,
|
tms->tm_year % 100, tms->tm_mon+1, tms->tm_mday,
|
||||||
tms->tm_hour, tms->tm_min, tms->tm_sec);
|
tms->tm_hour, tms->tm_min, tms->tm_sec);
|
||||||
return 0;
|
return 0;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user