1typedef	char *	caddr_t;
2typedef unsigned Cursor;
3typedef char *String;
4typedef struct _WidgetRec *Widget;
5typedef char		Boolean;
6typedef unsigned int	Cardinal;
7typedef struct _XedwListReturnStruct {
8  String   string;
9  int      xedwList_index;
10  struct _XedwListReturnStruct *next;
11} XedwListReturnStruct;
12static XedwListReturnStruct *return_list;
13static String   srcdir, dstdir;
14char *strcpy();
15  extern void setCursor(Cursor);
16  extern void query_dialog(String, Boolean);
17  extern Boolean directoryManagerNewDirectory(String);
18trashQueryResult(Widget w, Boolean delete, caddr_t call_data)
19{
20  int  execute(String, String, String, Boolean);
21  extern void destroy_button_dialog(void);
22  extern void changestate(Boolean);
23
24  extern Cursor busy, left_ptr;
25  extern String cwd;
26      	extern void freeReturnStruct(void);
27  String rmstring;
28  int status;
29  XedwListReturnStruct *tmp;
30  setCursor(busy);
31  destroy_button_dialog();
32  if (delete == 1) {
33    rmstring = (("rm -fr") != ((void *)0) ? (strcpy((char*)XtMalloc((unsigned)strlen("rm -fr") + 1), "rm -fr")) : ((void *)0));
34    tmp = return_list;
35    while (tmp != ((void *)0)) {
36      rmstring = (String) XtRealloc (rmstring, sizeof(char) *
37				     (strlen(rmstring) +
38				      strlen(tmp->string) + 5));
39      sprintf(rmstring, "%s '%s'", rmstring, tmp->string);
40      tmp = tmp->next;
41    }
42    if ((status = execute(((void *)0), "rm", rmstring, 1)) != 0) {
43      XBell(XtDisplay(w), 100);
44      query_dialog("Can't remove file", 0);
45    }
46    XtFree(rmstring);
47
48    directoryManagerNewDirectory(cwd);
49  } else {
50    changestate(1);
51  }
52  setCursor(left_ptr);
53  freeReturnStruct();
54}
55
56copyQueryResult(Widget w, Boolean copy, caddr_t call_data)
57{
58  extern void destroy_button_dialog();
59  extern void changestate(Boolean);
60  extern Cursor busy, left_ptr;
61  extern void freeReturnStruct(void);
62  int execute(String, String, String, Boolean);
63  extern String cwd;
64  String copystring;
65  int status;
66  Cardinal srclen, dstlen;
67  XedwListReturnStruct *tmp;
68  destroy_button_dialog();
69  setCursor(busy);
70  if (copy == 1) {
71    srclen = strlen(srcdir);
72    dstlen = strlen(dstdir);
73    copystring = (("cp -r") != ((void *)0) ? (strcpy((char*)XtMalloc((unsigned)strlen("cp -r") + 1), "cp -r")) : ((void *)0));
74    tmp = return_list;
75    while (tmp != ((void *)0)) {
76      copystring = (String) XtRealloc (copystring, sizeof(char) *
77				       (strlen(copystring) +
78					strlen(tmp->string) +
79					srclen + 6));
80      sprintf(copystring, "%s '%s/%s'", copystring, srcdir, tmp->string);
81      tmp = tmp->next;
82    }
83    copystring = (String) XtRealloc (copystring, sizeof(char) *
84				     (strlen(copystring) +
85				      dstlen + 5));
86    sprintf(copystring, "%s '%s'", copystring, dstdir);
87    if ((status = execute(((void *)0), "cp", copystring, 1)) != 0) {
88      XBell(XtDisplay(w), 100);
89      query_dialog("Can't copy file!", 0);
90    }
91    XtFree(copystring);
92
93    directoryManagerNewDirectory(cwd);
94  } else {
95    changestate(1);
96  }
97  XtFree(srcdir);
98  XtFree(dstdir);
99  setCursor(left_ptr);
100  freeReturnStruct();
101}
102
103freeReturnStruct(){}
104