1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160
|
/*
* Copyright (c) 1992 Carnegie Mellon University
* All Rights Reserved.
*
* Permission to use, copy, modify and distribute this software and its
* documentation is hereby granted, provided that both the copyright
* notice and this permission notice appear in all copies of the
* software, derivative works or modified versions, and any portions
* thereof, and that both notices appear in supporting documentation.
*
* CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
* CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
* ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
*
* Carnegie Mellon requests users of this software to return to
*
* Software Distribution Coordinator or Software_Distribution@CS.CMU.EDU
* School of Computer Science
* Carnegie Mellon University
* Pittsburgh PA 15213-3890
*
* any improvements or extensions that they make and grant Carnegie Mellon
* the rights to redistribute these changes.
*/
/*
* supcdefs.h -- Declarations shared by the collection of files
* that build the sup client.
*
**********************************************************************
* HISTORY
* 7-July-93 Nate Williams at Montana State University
* Modified SUP to use gzip based compression when sending files
* across the network to save BandWidth
*
* $Log: supcdefs.h,v $
* Revision 1.3 1994/08/11 02:46:21 rich
* Added extensions written by David Dawes. From the man page:
*
* The -u flag, or the noupdate supfile option prevent updates from
* occurring for regular files where the modification time and mode
* hasn't changed.
*
* Now, how do we feed these patches back to CMU for consideration?
*
* Revision 1.2 1994/06/20 06:04:06 rgrimes
* Humm.. they did a lot of #if __STDC__ but failed to properly prototype
* the code. Also fixed one bad argument to a wait3 call.
*
* It won't compile -Wall, but atleast it compiles standard without warnings
* now.
*
* Revision 1.1.1.1 1993/08/21 00:46:34 jkh
* Current sup with compression support.
*
* Revision 1.1.1.1 1993/05/21 14:52:18 cgd
* initial import of CMU's SUP to NetBSD
*
* Revision 1.6 92/08/11 12:06:52 mrt
* Added CFURELSUF - use-release-suffix flag
* Made rpause code conditional on MACH rather than CMUCS
* [92/07/26 mrt]
*
* Revision 1.5 92/02/08 18:23:57 mja
* Added CFKEEP flag.
* [92/01/17 vdelvecc]
*
* 10-Feb-88 Glenn Marcy (gm0w) at Carnegie-Mellon University
* Added timeout for backoff.
*
* 28-Jun-87 Glenn Marcy (gm0w) at Carnegie-Mellon University
* Added Crelease for "release" support.
*
* 25-May-87 Doug Philips (dwp) at Carnegie-Mellon University
* Created.
*
**********************************************************************
*/
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <time.h>
#include <netdb.h>
#include <signal.h>
#include <setjmp.h>
#include <pwd.h>
#include <grp.h>
#include <sys/time.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/file.h>
#include <sys/errno.h>
#include "libc.h"
#if MACH /* used by resource pausing code only */
#include <sys/ioctl.h>
#include <sys/resource.h>
#endif /* MACH */
#include <c.h>
#include "sup.h"
#include "supmsg.h"
extern int errno;
extern uid_t getuid();
extern gid_t getgid();
/*extern long time();*/
extern int PGMVERSION;
/*******************************************
*** D A T A S T R U C T U R E S ***
*******************************************/
struct collstruct { /* one per collection to be upgraded */
char *Cname; /* collection name */
TREE *Chost; /* attempted host for collection */
TREE *Chtree; /* possible hosts for collection */
char *Cbase; /* local base directory */
char *Chbase; /* remote base directory */
char *Cprefix; /* local collection pathname prefix */
char *Crelease; /* release name */
char *Cnotify; /* user to notify of status */
char *Clogin; /* remote login name */
char *Cpswd; /* remote password */
char *Ccrypt; /* data encryption key */
int Ctimeout; /* timeout for backoff */
int Cflags; /* collection flags */
int Cnogood; /* upgrade no good, "when" unchanged */
int Clockfd; /* >= 0 if collection is locked */
struct collstruct *Cnext; /* next collection */
};
typedef struct collstruct COLLECTION;
#define CFALL 00001
#define CFBACKUP 00002
#define CFDELETE 00004
#define CFEXECUTE 00010
#define CFLIST 00020
#define CFLOCAL 00040
#define CFMAIL 00100
#define CFOLD 00200
#define CFVERBOSE 00400
#define CFKEEP 01000
#define CFURELSUF 02000
#define CFCOMPRESS 04000
#define CFNOUPDATE 010000
/*************************
*** M A C R O S ***
*************************/
#define vnotify if (thisC->Cflags&CFVERBOSE) notify
/*
* C prototypes
*/
#if __STDC__
void done __P((int value,char *fmt,...));
void goaway __P((char *fmt,...));
void notify __P((char *fmt,...));
#endif
|