| typedef char * caddr_t; |
| typedef unsigned Cursor; |
| typedef char *String; |
| typedef struct _WidgetRec *Widget; |
| typedef char Boolean; |
| typedef unsigned int Cardinal; |
| typedef struct _XedwListReturnStruct { |
| String string; |
| int xedwList_index; |
| struct _XedwListReturnStruct *next; |
| } XedwListReturnStruct; |
| static XedwListReturnStruct *return_list; |
| static String srcdir, dstdir; |
| char *strcpy(); |
| extern void setCursor(Cursor); |
| extern void query_dialog(String, Boolean); |
| extern Boolean directoryManagerNewDirectory(String); |
| trashQueryResult(Widget w, Boolean delete, caddr_t call_data) |
| { |
| int execute(String, String, String, Boolean); |
| extern void destroy_button_dialog(void); |
| extern void changestate(Boolean); |
| |
| extern Cursor busy, left_ptr; |
| extern String cwd; |
| extern void freeReturnStruct(void); |
| String rmstring; |
| int status; |
| XedwListReturnStruct *tmp; |
| setCursor(busy); |
| destroy_button_dialog(); |
| if (delete == 1) { |
| rmstring = (("rm -fr") != ((void *)0) ? (strcpy((char*)XtMalloc((unsigned)strlen("rm -fr") + 1), "rm -fr")) : ((void *)0)); |
| tmp = return_list; |
| while (tmp != ((void *)0)) { |
| rmstring = (String) XtRealloc (rmstring, sizeof(char) * |
| (strlen(rmstring) + |
| strlen(tmp->string) + 5)); |
| sprintf(rmstring, "%s '%s'", rmstring, tmp->string); |
| tmp = tmp->next; |
| } |
| if ((status = execute(((void *)0), "rm", rmstring, 1)) != 0) { |
| XBell(XtDisplay(w), 100); |
| query_dialog("Can't remove file", 0); |
| } |
| XtFree(rmstring); |
| |
| directoryManagerNewDirectory(cwd); |
| } else { |
| changestate(1); |
| } |
| setCursor(left_ptr); |
| freeReturnStruct(); |
| } |
| |
| copyQueryResult(Widget w, Boolean copy, caddr_t call_data) |
| { |
| extern void destroy_button_dialog(); |
| extern void changestate(Boolean); |
| extern Cursor busy, left_ptr; |
| extern void freeReturnStruct(void); |
| int execute(String, String, String, Boolean); |
| extern String cwd; |
| String copystring; |
| int status; |
| Cardinal srclen, dstlen; |
| XedwListReturnStruct *tmp; |
| destroy_button_dialog(); |
| setCursor(busy); |
| if (copy == 1) { |
| srclen = strlen(srcdir); |
| dstlen = strlen(dstdir); |
| copystring = (("cp -r") != ((void *)0) ? (strcpy((char*)XtMalloc((unsigned)strlen("cp -r") + 1), "cp -r")) : ((void *)0)); |
| tmp = return_list; |
| while (tmp != ((void *)0)) { |
| copystring = (String) XtRealloc (copystring, sizeof(char) * |
| (strlen(copystring) + |
| strlen(tmp->string) + |
| srclen + 6)); |
| sprintf(copystring, "%s '%s/%s'", copystring, srcdir, tmp->string); |
| tmp = tmp->next; |
| } |
| copystring = (String) XtRealloc (copystring, sizeof(char) * |
| (strlen(copystring) + |
| dstlen + 5)); |
| sprintf(copystring, "%s '%s'", copystring, dstdir); |
| if ((status = execute(((void *)0), "cp", copystring, 1)) != 0) { |
| XBell(XtDisplay(w), 100); |
| query_dialog("Can't copy file!", 0); |
| } |
| XtFree(copystring); |
| |
| directoryManagerNewDirectory(cwd); |
| } else { |
| changestate(1); |
| } |
| XtFree(srcdir); |
| XtFree(dstdir); |
| setCursor(left_ptr); |
| freeReturnStruct(); |
| } |
| |
| void freeReturnStruct(){} |