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);
}
Beispiel #7
0
Datei: DF.C Projekt: FDOS/defrag
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,&sectors,&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;

}