mirror of
https://gitea.psi.ch/ELOG/elog.git
synced 2026-09-08 17:13:56 +00:00
elog utility can read text from stdin
SVN revision: 552
This commit is contained in:
parent
9f6fd1f8fc
commit
d6c1b9c8f2
51
src/elog.c
51
src/elog.c
@ -6,6 +6,9 @@
|
|||||||
Contents: Electronic logbook utility
|
Contents: Electronic logbook utility
|
||||||
|
|
||||||
$Log$
|
$Log$
|
||||||
|
Revision 1.4 2003/06/04 14:26:59 midas
|
||||||
|
elog utility can read text from stdin
|
||||||
|
|
||||||
Revision 1.3 2003/06/03 13:18:00 midas
|
Revision 1.3 2003/06/03 13:18:00 midas
|
||||||
Fixed bug in base64_encode
|
Fixed bug in base64_encode
|
||||||
|
|
||||||
@ -427,6 +430,7 @@ char attr_name[MAX_N_ATTR][NAME_LENGTH], attrib[MAX_N_ATTR][NAME_LENGTH];
|
|||||||
text[0] = textfile[0] = uname[0] = upwd[0] = 0;
|
text[0] = textfile[0] = uname[0] = upwd[0] = 0;
|
||||||
host_name[0] = logbook[0] = password[0] = subdir[0] = n_att = n_attr = reply = 0;
|
host_name[0] = logbook[0] = password[0] = subdir[0] = n_att = n_attr = reply = 0;
|
||||||
port = 80;
|
port = 80;
|
||||||
|
|
||||||
for (i=0 ; i<MAX_ATTACHMENTS ; i++)
|
for (i=0 ; i<MAX_ATTACHMENTS ; i++)
|
||||||
{
|
{
|
||||||
attachment[i][0] = 0;
|
attachment[i][0] = 0;
|
||||||
@ -486,7 +490,8 @@ char attr_name[MAX_N_ATTR][NAME_LENGTH], attrib[MAX_N_ATTR][NAME_LENGTH];
|
|||||||
{
|
{
|
||||||
usage:
|
usage:
|
||||||
printf("\nusage: elog\n");
|
printf("\nusage: elog\n");
|
||||||
printf(" -h <hostname> [-p port] [-s subdir] Name of host where elogd is running\n");
|
printf(" -h <hostname> [-p port] [-s subdir]\n");
|
||||||
|
printf(" Location where elogd is running\n");
|
||||||
printf(" -l logbook/experiment Name of logbook or experiment\n");
|
printf(" -l logbook/experiment Name of logbook or experiment\n");
|
||||||
printf(" [-v] for verbose output\n");
|
printf(" [-v] for verbose output\n");
|
||||||
printf(" [-w password] write password defined on server\n");
|
printf(" [-w password] write password defined on server\n");
|
||||||
@ -496,9 +501,9 @@ char attr_name[MAX_N_ATTR][NAME_LENGTH], attrib[MAX_N_ATTR][NAME_LENGTH];
|
|||||||
printf(" [-r <id>] Reply to existing message\n");
|
printf(" [-r <id>] Reply to existing message\n");
|
||||||
printf(" -m <textfile>] | <text>\n");
|
printf(" -m <textfile>] | <text>\n");
|
||||||
printf("\nArguments with blanks must be enclosed in quotes\n");
|
printf("\nArguments with blanks must be enclosed in quotes\n");
|
||||||
printf("The elog message can either be submitted on the command line\n");
|
printf("The elog message can either be submitted on the command line, piped in like\n");
|
||||||
printf("or in a file with the -m flag. Multiple attributes and attachments\n");
|
printf("\"cat text | elog -h ... -l ... -a ...\" or in a file with the -m flag.\n");
|
||||||
printf("can be supplied\n");
|
printf("Multiple attributes and attachments can be supplied\n");
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -525,14 +530,15 @@ char attr_name[MAX_N_ATTR][NAME_LENGTH], attrib[MAX_N_ATTR][NAME_LENGTH];
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fh = -1;
|
||||||
|
|
||||||
if (text[0] == 0 && textfile[0] == 0)
|
if (text[0] == 0 && textfile[0] == 0)
|
||||||
{
|
{
|
||||||
printf("Please specify message text either with the \"-m\" flag or directly.\n");
|
/* use stdin */
|
||||||
return 1;
|
fh = 0;
|
||||||
|
size = sizeof(text);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*---- open text file ----*/
|
|
||||||
|
|
||||||
if (textfile[0])
|
if (textfile[0])
|
||||||
{
|
{
|
||||||
fh = open(textfile, O_RDONLY | O_BINARY);
|
fh = open(textfile, O_RDONLY | O_BINARY);
|
||||||
@ -551,17 +557,35 @@ char attr_name[MAX_N_ATTR][NAME_LENGTH], attrib[MAX_N_ATTR][NAME_LENGTH];
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
memset(text, 0, sizeof(text));
|
|
||||||
i = read(fh, text, size);
|
i = read(fh, text, size);
|
||||||
|
|
||||||
if (i < size)
|
if (i < size)
|
||||||
{
|
{
|
||||||
printf("Cannot fully read message file \"%s\".\n", textfile);
|
printf("Cannot fully read message from file %s.\n", textfile);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
close(fh);
|
close(fh);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (text[0] == 0 && textfile[0] == 0)
|
||||||
|
{
|
||||||
|
/* read from stdin */
|
||||||
|
|
||||||
|
n = 0;
|
||||||
|
|
||||||
|
do
|
||||||
|
{
|
||||||
|
i = getchar();
|
||||||
|
|
||||||
|
text[n++] = i;
|
||||||
|
|
||||||
|
} while (i != EOF);
|
||||||
|
|
||||||
|
if (n>0)
|
||||||
|
text[n-1] = 0;
|
||||||
|
}
|
||||||
|
|
||||||
/*---- open attachment file ----*/
|
/*---- open attachment file ----*/
|
||||||
|
|
||||||
for (i = 0 ; i<MAX_ATTACHMENTS ; i++)
|
for (i = 0 ; i<MAX_ATTACHMENTS ; i++)
|
||||||
@ -580,13 +604,6 @@ char attr_name[MAX_N_ATTR][NAME_LENGTH], attrib[MAX_N_ATTR][NAME_LENGTH];
|
|||||||
lseek(fh, 0, SEEK_SET);
|
lseek(fh, 0, SEEK_SET);
|
||||||
|
|
||||||
buffer[i] = malloc(att_size[i]+1);
|
buffer[i] = malloc(att_size[i]+1);
|
||||||
/*
|
|
||||||
if (buffer[i] == NULL || att_size[i] > 500*1024)
|
|
||||||
{
|
|
||||||
printf("Attachment file \"%s\" is too long (500k max).\n", attachment[i]);
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
n = read(fh, buffer[i], att_size[i]);
|
n = read(fh, buffer[i], att_size[i]);
|
||||||
if (n < att_size[i])
|
if (n < att_size[i])
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user