v04i094: xmtool, Patch1
Dan Heller
argv at island.uu.net
Fri Aug 18 13:02:16 AEST 1989
Submitted-by: ames!mailrus!sharkey!oshima!chang (Peter Chang)
Posting-number: Volume 4, Issue 94
Archive-name: xmtool/patch1
Patch-To: Volume 4, Issue 36 (June 30 1989)
#!/bin/sh
# Patch for xmtool.v2
# To extract, remove the header and type "sh filename"
if `test ! -s ./README.v2`
then
echo "writing ./README.v2"
cat > ./README.v2 << '\End\Of\File\'
Features added:
1. Added resource XtNinput for shell widgets.
2. Added more functions to the status command.
3. Automatically delete a message after it was saved.
4. Handle the new line character that user inserts.
Send comments, flames, etc to chang at edsews.eds.com or
Peter Chang
Electronic Data Systems Corporation
750 Tower Drive
Troy, MI 48007-7019
\End\Of\File\
else
echo "will not overwrite ./README.v2"
fi
if `test ! -s ./xmtool.c.v2.patch`
then
echo "writing ./xmtool.c.v2.patch"
cat > ./xmtool.c.v2.patch << '\End\Of\File\'
*** xmtool.c.old Mon Jul 3 14:07:18 1989
--- xmtool.c Thu Aug 17 11:12:16 1989
***************
*** 248,254 ****
XtSetArg( arg[2], XtNfromVert, viewport3);
XtSetArg( arg[3], XtNwidth, 990);
XtSetArg( arg[4], XtNheight, 250);
! XtSetArg( arg[5], XtNbackground, stringToPixel(outer,"yellow"));
textw1 = XtCreateManagedWidget( NULL, asciiDiskWidgetClass, boxtextw1, arg, 6 );
}
void selectf()
--- 248,254 ----
XtSetArg( arg[2], XtNfromVert, viewport3);
XtSetArg( arg[3], XtNwidth, 990);
XtSetArg( arg[4], XtNheight, 250);
! XtSetArg( arg[5], XtNbackground, stringToPixel(outer,"lightBlue"));
textw1 = XtCreateManagedWidget( NULL, asciiDiskWidgetClass, boxtextw1, arg, 6 );
}
void selectf()
***************
*** 879,884 ****
--- 879,885 ----
int i, j, fd, fp, len, num;
char msg[80];
char text[400], dirname[40];
+ delBlank();
bzero(dirname, 40);
parsefname(dirname);
if ((i = stat(dirname, &stbuf)) != 0) {
***************
*** 904,909 ****
--- 905,919 ----
close(fd);
return;
}
+ /* Check to see whether it is a valid file name */
+ if ((fd = open(filename, 2)) < 0) {
+ if ((fd = creat(filename, 0700)) < 0) {
+ fprintf(stderr, "can't save to the file %s\n", filename);
+ return;
+ } else
+ close(fd);
+ } else
+ close(fd);
if ((fp = creat(logf3, 0700)) < 0){
perror("open problem");
exit(-1);
***************
*** 938,943 ****
--- 948,954 ----
}
close(fp);
system(savecmd);
+ delete();
}
void rplyf()
{
***************
*** 1101,1106 ****
--- 1112,1118 ----
XtSetArg(arg[0], XtNwidth, 400);
XtSetArg(arg[1], XtNheight, 125);
+ XtSetArg(arg[2], XtNinput, True);
tolevel = XtCreatePopupShell("Subject Cc",applicationShellWidgetClass,toplevel,
arg, 2);
XtSetArg(arg[0], XtNwidth, 400);
***************
*** 1148,1153 ****
--- 1160,1166 ----
{
char fname[38], fname1[45];
int i, fd;
+ delBlank();
bzero(mailtcmd, 80);
if (filename[0] == '-' && filename[1] == '>'){
bzero(fname, 38);
***************
*** 1247,1253 ****
--- 1260,1353 ----
{
/* status for the commands save, reply to sender and reply to all*/
Arg arg[10];
+ char text[400];
+ int i, j, len, num, fd;
quithlp1();
+ if ((fd = open(logf4, 1)) < 0) {
+ perror("statusMailf: open problem");
+ quitOnCond();
+ exit(-1);
+ }
+ if (lseek(fd, 0L, 2) < 0){
+ perror("statusMailf: lseek problem");
+ quitOnCond();
+ exit(-1);
+ }
+ if (write(fd, "Range and selected multiple messages information:\n", 50) != 50) {
+ perror("statusMailf: write problem");
+ exit(-1);
+ }
+ if (delete_sw) {
+ if (lseek(fd, 0L, 2) < 0){
+ perror("statusMailf: lseek problem");
+ quitOnCond();
+ exit(-1);
+ }
+ if (write(fd, "Range:\n", 6) != 6) {
+ perror("statusMailf: write problem");
+ exit(-1);
+ }
+ bzero(text, 20);
+ sprintf(text, "%d - ", count);
+ write(fd, text, strlen(text));
+ bzero(text, 20);
+ sprintf(text, "%d\n", countnew);
+ write(fd, text, strlen(text));
+ } else {
+ if (lseek(fd, 0L, 2) < 0){
+ perror("statusMailf: lseek problem");
+ quitOnCond();
+ exit(-1);
+ }
+ if (write(fd, "No range\n", 9) != 9) {
+ perror("statusMailf: write problem");
+ exit(-1);
+ }
+ }
+ if (selectflag) {
+ if (lseek(fd, 0L, 2) < 0){
+ perror("statusMailf: lseek problem");
+ quitOnCond();
+ exit(-1);
+ }
+ if (write(fd, "Selected messages:\n", 19) != 19) {
+ perror("statusMailf: write problem");
+ exit(-1);
+ }
+ num = selectflag / 15;
+ num++;
+ for (j=0; j < num; j++){
+ bzero(text, 400);
+ sprintf(text, "%d", selectList[j*15]);
+ for (i = 1; i < umailmin(15,selectflag - j*15); i++){
+ len = strlen(text);
+ sprintf(&text[len], " %d", selectList[i+j*15]);
+ }
+ len = strlen(text);
+ sprintf(&text[len], "\n");
+ write(fd, text, strlen(text));
+ }
+ } else {
+ if (lseek(fd, 0L, 2) < 0){
+ perror("statusMailf: lseek problem");
+ quitOnCond();
+ exit(-1);
+ }
+ if (write(fd, "No selected multiple messages\n", 30) != 30) {
+ perror("statusMailf: write problem");
+ exit(-1);
+ }
+ }
+ if (lseek(fd, 0L, 2) < 0){
+ perror("statusMailf: lseek problem");
+ quitOnCond();
+ exit(-1);
+ }
+ if (write(fd, "End of range and selected multiple messages information\n", 56) != 56) {
+ perror("statusMailf: write problem");
+ exit(-1);
+ }
+ close(fd);
boxtextw1 = XtCreateManagedWidget(NULL, boxWidgetClass, viewport4, NULL, 0);
XtSetArg( arg[0], XtNfile, logf4);
XtSetArg( arg[1], XtNtextOptions, scrollVertical );
***************
*** 1256,1262 ****
XtSetArg( arg[4], XtNy, y2);
XtSetArg( arg[5], XtNwidth, 990);
XtSetArg( arg[6], XtNheight, 250);
! XtSetArg( arg[7], XtNbackground, stringToPixel(outer,"yellow"));
textw1 = XtCreateManagedWidget( NULL, asciiDiskWidgetClass, boxtextw1, arg, 8 );
}
--- 1356,1362 ----
XtSetArg( arg[4], XtNy, y2);
XtSetArg( arg[5], XtNwidth, 990);
XtSetArg( arg[6], XtNheight, 250);
! XtSetArg( arg[7], XtNbackground, stringToPixel(outer,"lightBlue"));
textw1 = XtCreateManagedWidget( NULL, asciiDiskWidgetClass, boxtextw1, arg, 8 );
}
***************
*** 1388,1393 ****
--- 1488,1494 ----
{
static XtCallbackRec callback[2];
Arg arg[10];
+ int fd;
bzero(mailutildir, 80);
if (getenv("XMTOOLRESRC") != NULL)
strcpy(mailutildir, getenv("XMTOOLRESRC"));
***************
*** 1408,1415 ****
perror("Can't change mode");
exit(-1);
}
! toplevel = XtInitialize( NULL, "xmtool", options, XtNumber(options),
&argc, argv);
appcontxt = XtCreateApplicationContext();
XtSetArg( arg[0], XtNwidth, 1000 );
--- 1509,1523 ----
perror("Can't change mode");
exit(-1);
}
! if ((fd = creat(logf4, 0700)) < 0) {
! perror("createname: can't create file");
! exit(-1);
! }
! close(fd);
! toplevel = XtInitialize( argv[0], "XMtool", options, XtNumber(options),
&argc, argv);
+ XtSetArg ( arg[0], XtNinput, True);
+ XtSetValues( toplevel, arg, 1);
appcontxt = XtCreateApplicationContext();
XtSetArg( arg[0], XtNwidth, 1000 );
***************
*** 1640,1646 ****
XtSetArg( arg[1], XtNtextOptions, scrollVertical );
XtSetArg( arg[2], XtNheight, 250);
XtSetArg( arg[3], XtNwidth, 990);
! XtSetArg( arg[4], XtNbackground, stringToPixel(outer,"yellow"));
textw1 = XtCreateManagedWidget( NULL, asciiDiskWidgetClass, boxtextw1, arg, 5 );
XtSetArg(arg[0], XtNx, &x2);
XtSetArg(arg[1], XtNy, &y2);
--- 1748,1754 ----
XtSetArg( arg[1], XtNtextOptions, scrollVertical );
XtSetArg( arg[2], XtNheight, 250);
XtSetArg( arg[3], XtNwidth, 990);
! XtSetArg( arg[4], XtNbackground, stringToPixel(outer,"lightBlue"));
textw1 = XtCreateManagedWidget( NULL, asciiDiskWidgetClass, boxtextw1, arg, 5 );
XtSetArg(arg[0], XtNx, &x2);
XtSetArg(arg[1], XtNy, &y2);
***************
*** 1910,1913 ****
--- 2018,2039 ----
{
if (i < j) return i;
else return j;
+ }
+ delBlank()
+ {
+ int i;
+ char filename1[110];
+ bzero(filename1, 110);
+ strncpy(filename1, filename, 110);
+ bzero(filename, 110);
+ i = 0;
+ while ((filename1[i] != '\0') && (filename1[i] != '\n') && (i < 110)){
+ filename[i] = filename1[i];
+ i++;
+ }
+ if (i == 110){
+ fprintf(stderr, "save: index i of filename reaches 110\n");
+ quitOnCond();
+ exit(-1);
+ }
}
\End\Of\File\
else
echo "will not overwrite ./xmtool.c.v2.patch"
fi
if `test ! -s ./statushlp`
then
echo "writing ./statushlp"
cat > ./statushlp << '\End\Of\File\'
---------------------------------------------------------------------------------------------
|001|001|plus|minus|range|set counter|view|delete|save| |
---------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------
|001|incr|select|reply to sender|reply to all|edit|create|mail to list|status|clear status|update|help|
-------------------------------------------------------------------------------------------------------
^
|---status box
status: read the status file that contains possible outputs after you
select one of the three boxes: save, reply to sender, reply to all.
Also show the range of messages and list of selected messages.
\End\Of\File\
else
echo "will not overwrite ./statushlp"
fi
More information about the Comp.sources.x
mailing list