127 lines
4.8 KiB
C
127 lines
4.8 KiB
C
/*
|
|
* CDE - Common Desktop Environment
|
|
*
|
|
* Copyright (c) 1993-2012, The Open Group. All rights reserved.
|
|
*
|
|
* These libraries and programs are free software; you can
|
|
* redistribute them and/or modify them under the terms of the GNU
|
|
* Lesser General Public License as published by the Free Software
|
|
* Foundation; either version 2 of the License, or (at your option)
|
|
* any later version.
|
|
*
|
|
* These libraries and programs are distributed in the hope that
|
|
* they will be useful, but WITHOUT ANY WARRANTY; without even the
|
|
* implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
|
* PURPOSE. See the GNU Lesser General Public License for more
|
|
* details.
|
|
*
|
|
* You should have received a copy of the GNU Lesser General Public
|
|
* License along with these libraries and programs; if not, write
|
|
* to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
|
|
* Floor, Boston, MA 02110-1301 USA
|
|
*/
|
|
/* $XConsortium: dosync.h /main/5 1995/11/30 13:48:34 rswiston $ */
|
|
/************************************<+>*************************************
|
|
****************************************************************************
|
|
*
|
|
* FILE: dosync.h
|
|
*
|
|
*
|
|
* DESCRIPTION: Header file for dosync.c, main_dtcopy.c
|
|
*
|
|
* (c) Copyright 1993, 1994, 1995 Hewlett-Packard Company
|
|
* (c) Copyright 1993, 1994, 1995 International Business Machines Corp.
|
|
* (c) Copyright 1993, 1994, 1995 Sun Microsystems, Inc.
|
|
* (c) Copyright 1993, 1994, 1995 Novell, Inc.
|
|
*
|
|
****************************************************************************
|
|
************************************<+>*************************************/
|
|
|
|
#ifndef _dosync_h
|
|
#define _dosync_h
|
|
|
|
/* file type flags used in syncConfirmCallback */
|
|
#define ft_noent 0x01 /* file does not exist */
|
|
#define ft_isdir 0x02 /* file is a directory */
|
|
#define ft_islnk 0x04 /* file is a symbolic link */
|
|
|
|
/* file operations used in syncConfirmCallback and syncErrorCallback */
|
|
typedef enum {
|
|
op_sync, /* beginning directory sync */
|
|
op_opendir, /* opendir */
|
|
op_lstat, /* lstat */
|
|
op_stat, /* stat */
|
|
op_readlink, /* readlink */
|
|
op_delete, /* deleting file in target dir */
|
|
op_copy, /* copy/replace file in target dir */
|
|
op_mkdir, /* create new sub directory */
|
|
op_cplink, /* copy/replace symbolic link in target dir */
|
|
op_mklink, /* create link to source file/dir in target dir */
|
|
op_info_working,/* informational: still working on the current operation */
|
|
op_info_copy, /* informational: target is real copy of source */
|
|
op_info_link, /* informational: target is only sym link to source */
|
|
op_rename /* used in main_dtcopy.c to report an error */
|
|
} FileOp;
|
|
|
|
/* array of strings naming the file operaions */
|
|
extern char *FileOpNames[];
|
|
|
|
/* Callback functions */
|
|
extern int (*syncConfirmCallback)(FileOp op,
|
|
char *sname, int stype,
|
|
char *tname, int ttype,
|
|
char *link);
|
|
extern int (*syncErrorCallback)(FileOp op, char *fname, int errnum);
|
|
|
|
/* info for mapping symbolic links (-ml option) */
|
|
typedef struct ml {
|
|
char *from;
|
|
char *to;
|
|
struct ml *next;
|
|
} MapList;
|
|
|
|
|
|
/* list of file name patterns for -exclude and -skip */
|
|
typedef struct pl {
|
|
char *pattern;
|
|
struct pl *next;
|
|
} PatternList;
|
|
|
|
|
|
/* parameters for syncdir function */
|
|
typedef struct {
|
|
char *source; /* source directory */
|
|
char *target; /* target directory */
|
|
|
|
int verbose; /* verbose output */
|
|
int quiet; /* quiet output */
|
|
int dontdoit; /* only print what would be done */
|
|
|
|
int keepnew; /* keep target files that are newer than the source */
|
|
char *keepold; /* save target files that would be deleted/replaced */
|
|
int dontdelete; /* don't delete any files that no longer exist */
|
|
int dontadd; /* don't create new files */
|
|
int dontreplace; /* don't replace existing files */
|
|
int dontrecur; /* don't go into subdirectories */
|
|
|
|
MapList *maplink;
|
|
int keeplinks; /* keep links that point to source file */
|
|
int keepcopies; /* keep copies of files that are links in source */
|
|
int forcecopies; /* copy files even if unmodified */
|
|
int listlinks; /* list links that point to source file */
|
|
int listcopies; /* list copies of links */
|
|
int linkdirs; /* when new dir is found, just create a link to it */
|
|
int linkfiles; /* when new file is found, just create a link to it */
|
|
int copydirs; /* when link to dir is found, copy it */
|
|
int copyfiles; /* when link to file is found, copy it */
|
|
int copytop; /* if top-level is link, copy it */
|
|
|
|
PatternList *exclude; /* source files to be excluded */
|
|
PatternList *skip; /* files to be skipped */
|
|
} SyncParams;
|
|
|
|
|
|
extern void SyncDirectory(SyncParams *p);
|
|
|
|
#endif /* _dosync_h */
|