/*
 * Copyright (c) 2003, Daniel Bryan
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or 
 * without modification, are permitted provided that the following 
 * conditions are met:
 * - Redistributions of source code must retain the above copyright 
 *   notice, this list of conditions and the following disclaimer.
 * - Redistributions in binary form must reproduce the above copyright
 *   notice, this list of conditions and the following disclaimer in 
 *   the documentation and/or other materials provided with the 
 *   distribution.
 * - Neither the name of the author nor the names of its contributors
 *   may be used to endorse or promote products derived from this 
 *   software without specific prior written permission.
 * 
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 
 * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
 * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
 * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
 * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
 * POSSIBILITY OF SUCH DAMAGE.
 *
 */

#include <stdio.h>
#include <stdlib.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <sys/param.h>
#include <fts.h>
#include <curses.h>

#include "log.h"

#define VER_MAJ 1
#define VER_MIN 7
#define VER_REV 2

/* destination types */
#define T_FILE 0 /* FILE -> FILE             */
#define T_DIR  1 /*      -> DIR              */
#define T_NED  2 /* DIR  -> NON-EXISTENT DIR */

WINDOW *mainw;
WINDOW *logw;

struct dest_new {
	char *opath;
	char path[MAXPATHLEN+1];
};
extern struct dest_new dest;

extern unsigned long totalfiles;
extern unsigned long curfile;
extern unsigned long goodcp;

extern int Rflag,vflag,Hflag,Pflag,\
	Lflag,fflag,iflag,tflag,pflag, \
	dflag,hflag,mflag,Vflag,Iflag, \
	nflag;


#define SCRN_LEAVE    0
#define SCRN_SUMMARY  1
#define SCRN_KEYWAIT  2
/* 
 * scrn_state:
 * 0 - leave (just leave)
 * 1 - summary (summary with errors)
 * 2 - keywait (wait for a key press then leave)
 */
extern int scrn_state;
extern int scrn_border;
extern int use_color;
extern int use_curses;
extern int ret;
extern int buf_size;

extern char *databuf;

struct size_foo {
	unsigned long size;
	char c[3];
};

struct speed_foo {
	float size;
	char c[3];
};

int copyall(char *args[],int fts_opt,int type);
