static BOOL read_addrbook(struct opusftp_globals *ogp,IPCData *ipc) { BOOL ok=FALSE; Att_List *list; LONG err=0; int loop=0; do { loop=0; if ((list=do_read_sites_iff(ogp,FTP_ADDR_NAME,&err))) { ogp->og_SiteList=list; ok=TRUE; } else if (err!=205) // Error? but ignore object not found { // Show error loop=disk_error(ogp,NULL,err,ERROR_READ,ipc); } }while (loop); return(ok); }
struct ftp_config *read_options(struct window_params *wp,int opt_type) { struct display_globals *dg; short loop; char path[256]; struct ftp_config *conf=NULL; if (!wp) return(NULL); dg=wp->wp_dg; // Make window busy SetWindowBusy(wp->wp_win); // Set up path if (opt_type==WT_OPT) *path=0; else strcpy(path,FTP_OPTIONS_NAME); // Loop until successful do { // Clear loop flag loop=0; // Ok to read? if (do_filereq(wp->wp_win,path,opt_type==WT_OPT?MSG_ENV_READ_OPTIONS:MSG_ENV_READ_DEFAULT_OPTIONS,NULL)) { LONG err=0; // read options TRUE == ok if ((conf=do_read_options_iff(path,opt_type,&err))) { // set change flag dg->dg_options_change=1; } // Error? else { // Show error loop=disk_error(dg->dg_og,wp->wp_win,err,ERROR_READ,dg->dg_ipc); } } } while (loop); // Make window unbusy ClearWindowBusy(wp->wp_win); return(conf); }
BOOL save_sites(struct display_globals *dg,struct Window *win,short gadgetid) { short ok=1,loop; char path[256]; BOOL ret=FALSE; // Make window busy if (win) SetWindowBusy(win); // Copy path strcpy(path,FTP_ADDR_NAME); // Loop until successful do { // Clear loop flag loop=0; if (gadgetid==MENU_FTP_SAVEAS || !path[0]) ok=do_filereq(win,path,MSG_FTP_SAVE_SITES,FRF_DOSAVEMODE); // Ok to save? if (ok) { long err=0; // Save TRUE == ok if (do_save_sites_iff(dg,path,&err)) { // Clear change flag dg->dg_site_change=0; ret=TRUE; } // Error? else { // Show error loop=disk_error(dg->dg_og,win,err,ERROR_WRITE,dg->dg_ipc); } } } while (loop); // Make window unbusy if (win) ClearWindowBusy(win); return(ret); }
Att_List *read_sites(struct window_params *wp,short gadgetid) { struct display_globals *dg; short loop; char path[256]; Att_List *sitelist=NULL; if (!wp) return(NULL); dg=wp->wp_dg; // Make window busy SetWindowBusy(wp->wp_win); // Copy path use dg->dg_addressbook_name ?; strcpy(path,FTP_ADDR_NAME); // Loop until successful do { // Clear loop flag loop=0; // Ok to read? if (do_filereq(wp->wp_win,path,MSG_FTP_READ_SITES,0)) { LONG err=0; if ((sitelist=do_read_sites_iff(dg->dg_og,path,&err))) { // Clear change flag dg->dg_site_change=0; } // Error? else { // Show error loop=disk_error(dg->dg_og,wp->wp_win,err,ERROR_READ,dg->dg_ipc); } } } while (loop); // Make window unbusy ClearWindowBusy(wp->wp_win); return(sitelist); }
BOOL export_sites(struct display_globals *dg,struct Window *win) { short loop; char path[256]; BOOL ret=FALSE; // Make window busy if (win) SetWindowBusy(win); // clear path *path=0; // Loop until successful do { // Clear loop flag loop=0; if (do_filereq(win,path,MSG_FTP_SAVE_SITES,FRF_DOSAVEMODE)) { long err=0; // Save TRUE == ok if (do_export_sites(dg,path,&err)) ret=TRUE; // Error? else { // Show error loop=disk_error(dg->dg_og,win,err,ERROR_WRITE,dg->dg_ipc); } } } while (loop); // Make window unbusy if (win) ClearWindowBusy(win); return(ret); }
BOOL save_options(struct window_params *wp,int opt_type,short gadgetid) { struct display_globals *dg; short ok=1,loop; char path[256]; BOOL ret=FALSE; int type; if (!wp) { DisplayBeep(0); return(FALSE); } dg=wp->wp_dg; // Make window busy SetWindowBusy(wp->wp_win); if (opt_type==WT_DEFOPT) { type=ID_OPTIONS; // Copy default path strcpy(path,FTP_OPTIONS_NAME); } else { type=ID_ENV; *path=0; } // Loop until successful do { // Clear loop flag loop=0; if (gadgetid==MENU_ENV_SAVEAS || !path[0]) ok=do_filereq(wp->wp_win,path,opt_type==WT_OPT?MSG_ENV_SAVE_OPTIONS:MSG_ENV_SAVE_DEFAULT_OPTIONS,FRF_DOSAVEMODE); // Ok to save? if (ok) { long err=0; // Save options TRUE == ok if (do_save_options_iff(wp,path,type,&err)) { // Clear change flag dg->dg_options_change=0; ret=TRUE; } // Error? else { // Show error loop=disk_error(dg->dg_og,wp->wp_win,err,ERROR_WRITE,dg->dg_ipc); } } } while (loop); // Make window unbusy ClearWindowBusy(wp->wp_win); return(ret); }
int main(int argc, char **argv) { int fd,i; char *buffer; size_t bufsz; int tracks,sectors,heads; #if defined __WATCOMC__ || defined __GNUC__ setvbuf(stdout,NULL,_IONBF,0); /* flush stdout every printf */ #endif Reset = 0; Zero = 0; Keep = 0; Last = 0; Verify = 0; MaxTrack = MaxHead = -1; Bytes = 0; Disk = File = ToDisk = -1; SysOnly = 0; NoAsk = 0; options(argc,argv); if ((i = disk_get_physical(Disk,&tracks,§ors,&heads)) != DISK_OK) die("BIOS error: ",disk_error(i),0); if ((buffer = malloc(bufsz = sectors * 512)) == NULL) die("Not enough memory found!"," (%u)",bufsz); printf("\n"); if (Reset) { printf("Reseting controller..."); disk_reset(Disk); printf(" Homing disk..."); if ((i = disk_read_p(Disk,0,1,0,buffer,1)) != DISK_OK) die("BIOS error: ",disk_error(i),0); printf(" OK.\n"); } printf("Drive %c: has %u tracks and %u sides.\n",Disk+'A',tracks+1,heads+1); if (Last) setlast(Disk,&MaxTrack,&MaxHead,0); if (SysOnly) setlast(Disk,&MaxTrack,&MaxHead,1); if (ToDisk == 1) printf("\nWrite file \"%s\" to disk in %c:",argv[File],Disk+'A'); else printf("\nWrite disk in %c: to file \"%s\"",Disk+'A',argv[File]); if (!NoAsk && ask(NULL) == 0) return 1; if (ToDisk == 2) /* writing file */ { if ((fd = _open(argv[File],_O_RDONLY)) != -1) { _close(fd); printf("File \"%s\" exists",argv[File]); if (ask("; overwrite?") == 0) return 1; } fd = _open(argv[File],O_CREAT|O_RDWR|O_BINARY|O_TRUNC,S_IREAD|S_IWRITE); } else { fd = _open(argv[File],O_RDWR|O_BINARY); } if (fd == -1) die("file error: ",strerror(errno),errno); errno = 0; putchar('\n'); /* on error we get back here with setjmp() returning non-zero */ if (setjmp(Jmpbuf) == 0) { /* now that everything is verified and prepared, this is the meat */ if (ToDisk == 1) i = file2disk(fd,Disk,tracks,heads,sectors,bufsz,buffer); else i = disk2file(fd,Disk,tracks,heads,sectors,bufsz,buffer); if (i == DISK_OK) printf("\nDone. \n"); /* that's not hard is it... */ } else { puts("\n\nStopped. \n"); getch(); /* eat key from kbhit() */ } _close(fd); #ifdef _WIN32 if (i) #else if ((i = disk_status(Disk)) != 0) #endif die("BIOS error: ",disk_error(i),0); if (errno) die("File error: ",strerror(errno),errno); if (Reset) { printf("\nReseting controller..."); disk_reset(Disk); printf(" Homing disk...\n"); disk_read_p(Disk,0,1,0,buffer,1); } printf("\n%ld bytes written\n",Bytes); return 0; }