FreeBSD Bugzilla – Attachment 198378 Details for
Bug 232219
sysutils/radmind: Fix Openssl build
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
Move to radmind 1.15.1 which fixes the OpenSSL 1.1 build
radmind-1.15.1.patch.txt (text/plain), 45.56 KB, created by
mikeg
on 2018-10-19 18:30:55 UTC
(
hide
)
Description:
Move to radmind 1.15.1 which fixes the OpenSSL 1.1 build
Filename:
MIME Type:
Creator:
mikeg
Created:
2018-10-19 18:30:55 UTC
Size:
45.56 KB
patch
obsolete
>diff -ruN ./distinfo /root/radmind.new/distinfo >--- ./distinfo 2014-01-22 10:30:13.000000000 -0500 >+++ /root/radmind.new/distinfo 2018-10-18 18:26:28.148723000 -0400 >@@ -1,2 +1,2 @@ >-SHA256 (radmind-1.14.1.tar.gz) = 92ce3d586245b107bf4e412b59eb02ec3e57b4d12a0b9a16b0fadf10983ed21f >-SIZE (radmind-1.14.1.tar.gz) = 403553 >+SHA256 (radmind-1.15.1.tar.gz) = f8ca1770806d4b756d432d06399f11197b0841cea6dda0cfda34e85bf5747e2b >+SIZE (radmind-1.15.1.tar.gz) = 449653 >diff -ruN ./files/patch-.gitignore /root/radmind.new/files/patch-.gitignore >--- ./files/patch-.gitignore 2014-07-12 05:31:02.000000000 -0400 >+++ /root/radmind.new/files/patch-.gitignore 1969-12-31 19:00:00.000000000 -0500 >@@ -1,17 +0,0 @@ >---- ./.gitignore.orig 2010-12-13 04:42:49.000000000 +0100 >-+++ ./.gitignore 2014-06-29 12:15:04.241543320 +0200 >-@@ -10,12 +10,8 @@ >- config.log >- config.status >- >--# External Libraries # >--###################### >--libsnet >-- >--# Comiled Files # >--################# >-+# Compiled Files # >-+################## >- *.o >- fsdiff >- ktcheck >diff -ruN ./files/patch-.gitmodules /root/radmind.new/files/patch-.gitmodules >--- ./files/patch-.gitmodules 2014-07-12 05:31:02.000000000 -0400 >+++ /root/radmind.new/files/patch-.gitmodules 1969-12-31 19:00:00.000000000 -0500 >@@ -1,6 +0,0 @@ >---- ./.gitmodules.orig 2014-06-29 12:15:04.241543320 +0200 >-+++ ./.gitmodules 2014-06-29 12:15:04.242543988 +0200 >-@@ -0,0 +1,3 @@ >-+[submodule "libsnet"] >-+ path = libsnet >-+ url = git://libsnet.git.sourceforge.net/gitroot/libsnet/libsnet >diff -ruN ./files/patch-aclocal.m4 /root/radmind.new/files/patch-aclocal.m4 >--- ./files/patch-aclocal.m4 2014-07-12 05:31:02.000000000 -0400 >+++ /root/radmind.new/files/patch-aclocal.m4 1969-12-31 19:00:00.000000000 -0500 >@@ -1,42 +0,0 @@ >---- ./aclocal.m4.orig 2010-12-13 04:42:49.000000000 +0100 >-+++ ./aclocal.m4 2014-06-29 12:15:04.242543988 +0200 >-@@ -105,16 +105,11 @@ >- arches="-arch i386 -arch ppc" >- ;; >- >-- darwin9*) >-+ darwin9*|darwin10*|darwin11*) >- dep_target="-mmacosx-version-min=10.4" >- macosx_sdk="MacOSX10.5.sdk" >- arches="-arch i386 -arch x86_64 -arch ppc -arch ppc64" >-- ;; >-- >-- darwin10*) >-- dep_target="-mmacosx-version-min=10.4" >-- macosx_sdk="MacOSX10.6.sdk" >-- arches="-arch i386 -arch x86_64 -arch ppc" >-+ LDFLAGS="$LDFLAGS -L/Developer/SDKs/$macosx_sdk/usr/lib" >- ;; >- >- *) >-@@ -129,3 +124,20 @@ >- fi >- ]) >- >-+AC_DEFUN([MACOSX_MUTE_DEPRECATION_WARNINGS], >-+[ >-+ dnl Lion deprecates a system-provided OpenSSL. Build output >-+ dnl is cluttered with useless deprecation warnings. >-+ >-+ AS_IF([test x"$CC" = x"gcc"], [ >-+ case "${host_os}" in >-+ darwin11*) >-+ AC_MSG_NOTICE([muting deprecation warnings from compiler]) >-+ OPTOPTS="$OPTOPTS -Wno-deprecated-declarations" >-+ ;; >-+ >-+ *) >-+ ;; >-+ esac >-+ ]) >-+]) >diff -ruN ./files/patch-argcargv.c /root/radmind.new/files/patch-argcargv.c >--- ./files/patch-argcargv.c 2014-07-12 05:31:02.000000000 -0400 >+++ /root/radmind.new/files/patch-argcargv.c 1969-12-31 19:00:00.000000000 -0500 >@@ -1,13 +0,0 @@ >---- ./argcargv.c.orig 2010-12-13 04:42:49.000000000 +0100 >-+++ ./argcargv.c 2014-06-29 12:15:04.243544285 +0200 >-@@ -48,7 +48,9 @@ >- >- if ( acav == NULL ) { >- if ( acavg == NULL ) { >-- acavg = acav_alloc(); >-+ if (( acavg = acav_alloc()) == NULL ) { >-+ return( -1 ); >-+ } >- } >- acav = acavg; >- } >diff -ruN ./files/patch-command.c /root/radmind.new/files/patch-command.c >--- ./files/patch-command.c 2014-07-12 05:31:02.000000000 -0400 >+++ /root/radmind.new/files/patch-command.c 1969-12-31 19:00:00.000000000 -0500 >@@ -1,230 +0,0 @@ >---- ./command.c.orig 2010-12-13 04:42:49.000000000 +0100 >-+++ ./command.c 2014-06-29 12:15:04.244544161 +0200 >-@@ -477,38 +477,90 @@ >- >- /* looks for special file info in transcripts */ >- char ** >--special_t( char *transcript, char *epath ) >-+special_t( char *sp_path, char *remote_path ) >- { >-- FILE *fs; >-- int ac, len; >-- char **av; >-+ FILE *fs = NULL; >-+ int i, ac, len, ln; >-+ char **av = NULL; >-+ char *paths[ 4 ] = { NULL }; >-+ char *p; >-+ char sp_t[ MAXPATHLEN ]; >- static char line[ MAXPATHLEN ]; >- >-- if (( fs = fopen( transcript, "r" )) == NULL ) { >-- return( NULL ); >-- } >-+ /* >-+ * in order, we look for special file transcript lines in the >-+ * following locations: >-+ * >-+ * - A transcript in the same directory and with the same name >-+ * as the special file, but with a ".T" extension. >-+ * >-+ * - A transcript named "<remote_id>.T" in the same directory as >-+ * the client's special file directory root. >-+ * >-+ * - /var/radmind/transcript/special.T >-+ * >-+ * if no matching transcript line is found, default metadata is >-+ * returned to the client (type: f; mode: 0444; owner: 0; group: 0). >-+ */ >-+ paths[ 0 ] = sp_path; >-+ paths[ 1 ] = special_dir; >-+ paths[ 2 ] = "transcript/special.T"; >-+ paths[ 3 ] = NULL; >- >-- while ( fgets( line, MAXPATHLEN, fs ) != NULL ) { >-- len = strlen( line ); >-- if (( line[ len - 1 ] ) != '\n' ) { >-- syslog( LOG_ERR, "special_t: %s: line too long", transcript ); >-- break; >-+ for ( i = 0; paths[ i ] != NULL; i++ ) { >-+ if (( p = strrchr( paths[ i ], '.' )) != NULL >-+ && strcmp( p, ".T" ) == 0 ) { >-+ if ( strlen( paths[ i ] ) >= MAXPATHLEN ) { >-+ syslog( LOG_WARNING, "special_t: path \"%s\" too long", >-+ paths[ i ] ); >-+ continue; >-+ } >-+ strcpy( sp_t, paths[ i ] ); >-+ } else if ( snprintf( sp_t, MAXPATHLEN, "%s.T", >-+ paths[ i ] ) >= MAXPATHLEN ) { >-+ syslog( LOG_WARNING, "special_t: path \"%s.T\" too long", sp_path ); >-+ continue; >- } >- >-- if (( ac = argcargv( line, &av )) != 8 ) { >-+ if (( fs = fopen( sp_t, "r" )) == NULL ) { >- continue; >- } >-- if (( *av[ 0 ] != 'f' ) && ( *av[ 0 ] != 'a' )) { >-- continue; >-+ >-+ ln = 0; >-+ while ( fgets( line, MAXPATHLEN, fs ) != NULL ) { >-+ ln++; >-+ len = strlen( line ); >-+ if (( line[ len - 1 ] ) != '\n' ) { >-+ syslog( LOG_ERR, "special_t: %s: line %d too long", sp_t, ln ); >-+ break; >-+ } >-+ >-+ /* only files and applefiles allowed */ >-+ if ( strncmp( line, "f ", strlen( "f " )) != 0 && >-+ strncmp( line, "a ", strlen( "a " )) != 0 ) { >-+ continue; >-+ } >-+ if (( ac = argcargv( line, &av )) != 8 ) { >-+ syslog( LOG_WARNING, "special_t: %s: line %d: " >-+ "bad transcript line", sp_t, ln ); >-+ continue; >-+ } >-+ >-+ if ( strcmp( av[ 1 ], remote_path ) == 0 ) { >-+ (void)fclose( fs ); >-+ return( av ); >-+ } >- } >- >-- if ( strcmp( av[ 1 ], epath ) == 0 ) { >-- (void)fclose( fs ); >-- return( av ); >-+ if ( fclose( fs ) != 0 ) { >-+ syslog( LOG_WARNING, "special_t: fclose %s: %m", sp_t ); >- } >-+ fs = NULL; >- } >-- >-- (void)fclose( fs ); >-+ if ( fs != NULL ) { >-+ (void)fclose( fs ); >-+ } >-+ >- return( NULL ); >- } >- >-@@ -624,11 +676,11 @@ >- switch ( key ) { >- case K_COMMAND: >- if ( ac == 2 ) { >-- snet_writef( sn, "%s %s %o %d %d %d %" PRIofft "d %s\r\n", >-+ snet_writef( sn, RADMIND_STAT_FMT, >- "f", "command", DEFAULT_MODE, DEFAULT_UID, DEFAULT_GID, >- st.st_mtime, st.st_size, cksum_b64 ); >- } else { >-- snet_writef( sn, "%s %s %o %d %d %d %" PRIofft "d %s\r\n", >-+ snet_writef( sn, RADMIND_STAT_FMT, >- "f", av[ 2 ], DEFAULT_MODE, DEFAULT_UID, DEFAULT_GID, >- st.st_mtime, st.st_size, cksum_b64 ); >- } >-@@ -636,61 +688,33 @@ >- >- >- case K_TRANSCRIPT: >-- snet_writef( sn, "%s %s %o %d %d %d %" PRIofft "d %s\r\n", >-+ snet_writef( sn, RADMIND_STAT_FMT, >- "f", av[ 2 ], >- DEFAULT_MODE, DEFAULT_UID, DEFAULT_GID, >- st.st_mtime, st.st_size, cksum_b64 ); >- return( 0 ); >- >- case K_SPECIAL: >-- /* status on a special file comes from 1 of three cases: >-- * 1. A transcript in the special file directory >-- * 2. A transcript in the Transcript dir with .T appended >-- * 3. No transcript is found, and constants are returned >-- */ >-- >-- /* look for transcript containing the information */ >-- if ( ( strlen( path ) + 2 ) > MAXPATHLEN ) { >-- syslog( LOG_WARNING, >-- "f_stat: transcript path longer than MAXPATHLEN" ); >-- >-- /* return constants */ >-- snet_writef( sn, "%s %s %o %d %d %d %" PRIofft "d %s\r\n", >-- "f", av[ 2 ], >-- DEFAULT_MODE, DEFAULT_UID, DEFAULT_GID, >-- st.st_mtime, st.st_size, cksum_b64 ); >-- return( 0 ); >-- } >-- >-- /* if allowable, check for transcript in the special file directory */ >-- >-- strcat( path, ".T" ); >-- >-- /* store value of av[ 2 ], because argcargv will be called >-+ /* >-+ * store value of av[ 2 ], because argcargv will be called >- * from special_t(), and that will blow away the current values >-- * for av[ 2 ] >-- * >-- * Could just use new argvargc API... XXX Notice how we never free >-- * env_file... >-+ * for av[ 2 ]. >- */ >-- >- if (( enc_file = strdup( av[ 2 ] )) == NULL ) { >- syslog( LOG_ERR, "f_stat: strdup: %s %m", av[ 2 ] ); >- return( -1 ); >- } >- >- if (( av = special_t( path, enc_file )) == NULL ) { >-- if (( av = special_t( "transcript/special.T", enc_file )) >-- == NULL ) { >-- snet_writef( sn, "%s %s %o %d %d %d %" PRIofft "d %s\r\n", >-- "f", enc_file, >-- DEFAULT_MODE, DEFAULT_UID, DEFAULT_GID, >-- st.st_mtime, st.st_size, cksum_b64 ); >-- free( enc_file ); >-- return( 0 ); >-- } >-+ /* no special transcript match found, return defaults. */ >-+ snet_writef( sn, RADMIND_STAT_FMT, >-+ "f", enc_file, >-+ DEFAULT_MODE, DEFAULT_UID, DEFAULT_GID, >-+ st.st_mtime, st.st_size, cksum_b64 ); >-+ free( enc_file ); >-+ return( 0 ); >- } >-- snet_writef( sn, "%s %s %s %s %s %d %" PRIofft "d %s\r\n", >-+ snet_writef( sn, RADMIND_STAT_FMT, >- av[ 0 ], enc_file, >- av[ 2 ], av[ 3 ], av[ 4 ], >- st.st_mtime, st.st_size, cksum_b64 ); >-@@ -1261,8 +1285,7 @@ >- continue; >- } >- if ( strcmp( av[ 0 ], "@include" ) == 0 ) { >-- depth++; >-- if ( depth > RADMIND_MAX_INCLUDE_DEPTH ) { >-+ if ( depth >= RADMIND_MAX_INCLUDE_DEPTH ) { >- syslog( LOG_ERR, "%s: line %d: include %s exceeds max depth", >- path_config, linenum, av[ 1 ] ); >- goto command_k_done; >-@@ -1277,7 +1300,7 @@ >- continue; >- } >- } >-- if ( command_k( av[ 1 ], depth ) != 0 ) { >-+ if ( command_k( av[ 1 ], depth + 1 ) != 0 ) { >- continue; >- } >- >-@@ -1325,7 +1348,8 @@ >- >- /* If we get here, the host that connected is not in the config >- file. So screw him. */ >-- syslog( LOG_ERR, "host not in config file: %s", remote_host ); >-+ syslog( LOG_ERR, "host %s not in config file %s", >-+ remote_host, path_config ); >- >- command_k_done: >- snet_close( sn ); >diff -ruN ./files/patch-command.h /root/radmind.new/files/patch-command.h >--- ./files/patch-command.h 2014-07-12 05:31:02.000000000 -0400 >+++ /root/radmind.new/files/patch-command.h 1969-12-31 19:00:00.000000000 -0500 >@@ -1,8 +0,0 @@ >---- ./command.h.orig 2010-12-13 04:42:49.000000000 +0100 >-+++ ./command.h 2014-06-29 12:15:04.244544161 +0200 >-@@ -13,3 +13,5 @@ >- char *c_name; >- int (*c_func)( SNET *, int, char *[] ); >- }; >-+ >-+#define RADMIND_STAT_FMT "%s %s %o %d %d %" PRItimet "d %" PRIofft "d %s\r\n" >diff -ruN ./files/patch-configure.ac /root/radmind.new/files/patch-configure.ac >--- ./files/patch-configure.ac 2014-07-12 05:31:02.000000000 -0400 >+++ /root/radmind.new/files/patch-configure.ac 1969-12-31 19:00:00.000000000 -0500 >@@ -1,51 +0,0 @@ >---- ./configure.ac.orig 2010-12-13 04:43:38.000000000 +0100 >-+++ ./configure.ac 2014-06-29 12:15:04.244544161 +0200 >-@@ -44,25 +44,36 @@ >- >- # Check sizes >- AC_CHECK_SIZEOF(off_t) >-+AC_CHECK_SIZEOF(time_t) >-+ >-+# check early to make any required changes to environment for following tests. >-+CHECK_UNIVERSAL_BINARIES >-+ >-+# mute Mac OS X's helpful notices that using dylib OpenSSL >-+MACOSX_MUTE_DEPRECATION_WARNINGS >- >- # Checks for libraries. >- AC_CHECK_LIB(c, inet_aton, libc_inet_aton=yes) >- if test x$libc_inet_aton != xyes; then >- AC_CHECK_LIB(resolv, inet_aton) >- fi >--AC_CHECK_LIB(c, lchown) >--AC_CHECK_LIB(c, lchmod) >-+if test x$host_vendor = xapply; then >-+ AC_CHECK_LIB(c, lchown, [AC_DEFINE(HAVE_LCHOWN)], []) >-+ AC_CHECK_LIB(c, lchmod, [AC_DEFINE(HAVE_LCHMOD)], []) >-+fi >- AC_CHECK_LIB(nsl, gethostbyaddr) >- AC_CHECK_LIB([socket], [socket]) >- AC_CHECK_LIB([ssl], [SSL_accept], , [CHECK_SSL]) >- AC_CHECK_HEADER([openssl/ssl.h], [], [AC_MSG_ERROR([header file <openssl/ssl.h> >- is required for this software. You may be running RedHat 9. If so, see the FAQ or the README for further instructions.])]) >- AC_CHECK_LIB([crypto], [SSLeay_version], , [CHECK_SSL]) >--AC_CHECK_FUNC([X509_VERIFY_PARAM_set_flags], [AC_DEFINE(HAVE_X509_VERIFY_PARAM)], []) >-+AC_CHECK_LIB([crypto], [X509_VERIFY_PARAM_set_flags], [AC_DEFINE(HAVE_X509_VERIFY_PARAM)], []) >- >- # PAM >--AC_ARG_WITH([pam], AC_HELP_STRING([--with-pam=yes], [Pluggable Authentication Module support (default: yes)]), [], with_pam=yes) >-+AC_ARG_WITH([pam], AC_HELP_STRING([--with-pam=PATH], [Pluggable Authentication Module support (default: /usr)]), [], with_pam=/usr) >- if test x_"$with_pam" != x_no; then >-+ CPPFLAGS="${CPPFLAGS} -I$with_pam/include" >-+ LDFLAGS="${LDFLAGS} -L$with_pam/lib" >- AC_CHECK_LIB([pam], [pam_start], >- [ >- AC_CHECK_HEADERS(pam/pam_appl.h, , [AC_CHECK_HEADERS(security/pam_appl.h)]) >-@@ -75,7 +86,6 @@ >- AC_CHECK_LIB(dns_sd, DNSServiceRegister) >- >- CHECK_ZLIB >--CHECK_UNIVERSAL_BINARIES >- >- # HPUX lacks wait4 and strtoll >- AC_CHECK_FUNCS(wait4 strtoll) >diff -ruN ./files/patch-contrib__specialist /root/radmind.new/files/patch-contrib__specialist >--- ./files/patch-contrib__specialist 2014-07-12 05:31:02.000000000 -0400 >+++ /root/radmind.new/files/patch-contrib__specialist 1969-12-31 19:00:00.000000000 -0500 >@@ -1,82 +0,0 @@ >---- ./contrib/specialist.orig 2014-06-29 12:15:04.244544161 +0200 >-+++ ./contrib/specialist 2014-06-29 12:15:04.245544128 +0200 >-@@ -0,0 +1,79 @@ >-+#! /bin/sh >-+ >-+# specialist: assist creation of special files. >-+ >-+PATH=/bin:/usr/bin:/usr/local/bin; export PATH >-+ >-+SCRIPT=`basename "$0"` >-+INPUT_FORMAT=${INPUT_FORMAT:=path} >-+ >-+usage() { >-+ echo "usage: ${SCRIPT} [ -T ]" 1>&2 >-+ exit 1 >-+} >-+ >-+die() { >-+ msg=$* >-+ >-+ echo "${msg}" 1>&2 >-+ exit 2 >-+} >-+ >-+# create a special transcript line for the given path. >-+specialize() { >-+ local path="$1" >-+ >-+ [ -n "${path}" -a -f "${path}" ] || die "Invalid path: ${path}" >-+ >-+ fsdiff -1 -c sha1 "${path}" >-+ return $? >-+} >-+ >-+specialize_transcript() { >-+ local path="" >-+ status=0 >-+ >-+ while read type path remainder; do >-+ if [ x"${type}" != x"f" ]; then >-+ continue >-+ fi >-+ >-+ specialize "${path}" >-+ done >-+} >-+ >-+specialize_paths() { >-+ local path="" >-+ status=0 >-+ >-+ while read path; do >-+ specialize "${path}" >-+ if [ $? -ne 0 ]; then >-+ status=1 >-+ fi >-+ done >-+ >-+ return "${status}" >-+} >-+ >-+while getopts T opt; do >-+ case $opt in >-+ T) >-+ INPUT_FORMAT="transcript" >-+ ;; >-+ >-+ *) >-+ usage >-+ ;; >-+ >-+ esac >-+done >-+shift $((OPTIND - 1)) >-+ >-+if [ x"${INPUT_FORMAT}" = x"transcript" ]; then >-+ specialize_transcript >-+else >-+ specialize_paths >-+fi >-+ >-+exit $? >diff -ruN ./files/patch-fsdiff.c /root/radmind.new/files/patch-fsdiff.c >--- ./files/patch-fsdiff.c 2014-07-12 05:31:02.000000000 -0400 >+++ /root/radmind.new/files/patch-fsdiff.c 1969-12-31 19:00:00.000000000 -0500 >@@ -1,251 +0,0 @@ >---- ./fsdiff.c.orig 2010-12-13 04:42:49.000000000 +0100 >-+++ ./fsdiff.c 2014-06-29 12:15:04.245544128 +0200 >-@@ -249,6 +249,144 @@ >- return; >- } >- >-+ static char * >-+canonicalized_path( char *path ) >-+{ >-+ int len; >-+ static char cpath[ MAXPATHLEN ]; >-+ >-+ if ( path == NULL ) { >-+ return( NULL ); >-+ } >-+ >-+ len = strlen( path ); >-+ if ( len >= sizeof( cpath )) { >-+ fprintf( stderr, "fsdiff: path too long: %s\n", path ); >-+ exit( 2 ); >-+ } >-+ strcpy( cpath, path ); >-+ >-+ /* Clip trailing '/' */ >-+ if (( len > 1 ) && ( cpath[ len - 1 ] == '/' )) { >-+ cpath[ len - 1 ] = '\0'; >-+ len--; >-+ } >-+ >-+ /* >-+ * If prefix doesn't contain a directory, canonicalize it by prepending a >-+ * "./". This allow paths to be dynamically converted between relative and >-+ * absolute paths without breaking sort order. >-+ */ >-+ switch( cpath[ 0 ] ) { >-+ case '/': >-+ break; >-+ >-+ case '.': >-+ /* Don't rewrite '.' or paths starting with './' */ >-+ if ( len == 1 || cpath[ 1 ] == '/' ) { >-+ break; >-+ } >-+ >-+ default: >-+ if ( len + 2 >= sizeof( cpath )) { >-+ fprintf( stderr, "fsdiff: path too long: ./%s\n", cpath ); >-+ exit( 2 ); >-+ } >-+ memmove( cpath + 2, cpath, len ); >-+ cpath[ 0 ] = '.'; cpath[ 1 ] = '/'; >-+ >-+ break; >-+ } >-+ >-+ /* >-+ * Determine if called with relative or absolute pathing. Path is relative >-+ * if it's just '.' or starts with './'. File names that start with a '.' >-+ * are absolute. >-+ */ >-+ if ( cpath[ 0 ] == '.' ) { >-+ if ( len == 1 ) { >-+ tran_format = T_RELATIVE; >-+ } else if ( cpath[ 1 ] == '/' ) { >-+ tran_format = T_RELATIVE; >-+ } else { >-+ tran_format = T_ABSOLUTE; >-+ } >-+ } else { >-+ tran_format = T_ABSOLUTE; >-+ } >-+ >-+ return( cpath ); >-+} >-+ >-+ static void >-+fsdiff( char *path, char *kfile, int start, int finish, int pdel ) >-+{ >-+ struct applefileinfo afinfo; >-+ struct stat st; >-+ char type; >-+ char lpath[ MAXPATHLEN ]; >-+ int len; >-+ >-+ if (( dotfd = open( ".", O_RDONLY, 0 )) < 0 ) { >-+ perror( "OOPS!" ); >-+ exit( 2 ); >-+ } >-+ >-+ if ( skip && strcmp( path, "-" ) == 0 ) { >-+ /* leave excludes in place */ >-+ skip = skip & ~T_SKIP_EXCLUDES; >-+ >-+ path_prefix = "/"; >-+ transcript_init( kfile, K_CLIENT ); >-+ >-+ /* run -1 against every line we get from stdin */ >-+ while ( fgets( lpath, sizeof( lpath ), stdin ) != NULL ) { >-+ len = strlen( lpath ); >-+ if ( lpath[ len - 1 ] != '\n' ) { >-+ fprintf( stderr, "fsdiff: fgets: line too long\n" ); >-+ exit( 2 ); >-+ } >-+ lpath[ len - 1 ] = '\0'; >-+ path = canonicalized_path( lpath ); >-+ >-+ if ( radstat( path, &st, &type, &afinfo ) != 0 ) { >-+ if ( errno != ENOENT ) { >-+ perror( lpath ); >-+ exit( 2 ); >-+ } >-+ >-+ fprintf( stderr, "Warning: %s: %s\n", path, strerror( errno )); >-+ continue; >-+ } >-+ (void)transcript( path, &st, &type, &afinfo, pdel ); >-+ } >-+ if ( ferror( stdin )) { >-+ perror( "fgets" ); >-+ exit( 2 ); >-+ } >-+ } else { >-+ path_prefix = canonicalized_path( path ); >-+ >-+ /* initialize the transcripts */ >-+ transcript_init( kfile, K_CLIENT ); >-+ >-+ if ( radstat( path_prefix, &st, &type, &afinfo ) != 0 ) { >-+ perror( path_prefix ); >-+ exit( 2 ); >-+ } >-+ >-+ fs_walk( path_prefix, &st, &type, &afinfo, start, finish, pdel ); >-+ } >-+ >-+ if ( finish > 0 ) { >-+ printf( "%%%d\n", ( int )finish ); >-+ } >-+ >-+ /* free the transcripts */ >-+ transcript_free( ); >-+ hardlink_free( ); >-+} >-+ >- int >- main( int argc, char **argv ) >- { >-@@ -258,9 +396,6 @@ >- int c, len, edit_path_change = 0; >- int errflag = 0, use_outfile = 0; >- int finish = 0; >-- struct stat st; >-- char type, buf[ MAXPATHLEN ]; >-- struct applefileinfo afinfo; >- >- edit_path = CREATABLE; >- cksum = 0; >-@@ -300,7 +435,7 @@ >- break; >- >- case '1': >-- skip = 1; >-+ skip = T_SKIP_ALL; >- case 'C': >- edit_path_change++; >- edit_path = CREATABLE; >-@@ -347,82 +482,13 @@ >- } >- >- if ( errflag || ( argc - optind != 1 )) { >-- fprintf( stderr, "usage: %s { -C | -A | -1 } [ -IVW ] ", argv[ 0 ] ); >-+ fprintf( stderr, "usage: %s { -C | -A | -1 } " "[ -IVW ] ", argv[ 0 ] ); >- fprintf( stderr, "[ -K command ] " ); >- fprintf( stderr, "[ -c checksum ] [ -o file [ -%% ] ] path\n" ); >- exit ( 2 ); >- } >- >-- path_prefix = argv[ optind ]; >-- len = strlen( path_prefix ); >-- >-- /* Clip trailing '/' */ >-- if (( len > 1 ) && ( path_prefix[ len - 1 ] == '/' )) { >-- path_prefix[ len - 1 ] = '\0'; >-- len--; >-- } >-- >-- /* If path_prefix doesn't contain a directory, canonicalize it by >-- * prepending a "./". This allow paths to be dynamically converted between >-- * relative and absolute paths without breaking sort order. >-- */ >-- switch( path_prefix[ 0 ] ) { >-- case '/': >-- break; >-- >-- case '.': >-- /* Don't rewrite '.' or paths starting with './' */ >-- if (( len == 1 ) || ( path_prefix[ 1 ] == '/' )) { >-- break; >-- } >-- default: >-- if ( snprintf( buf, sizeof( buf ), "./%s", >-- path_prefix ) >= MAXPATHLEN ) { >-- fprintf( stderr, "path too long\n" ); >-- exit( 2 ); >-- } >-- path_prefix = buf; >-- break; >-- } >-- >-- /* Determine if called with relative or absolute pathing. Path is relative >-- * if it's just '.' or starts with './'. File names that start with a '.' >-- * are absolute. >-- */ >-- if ( path_prefix[ 0 ] == '.' ) { >-- if ( len == 1 ) { >-- tran_format = T_RELATIVE; >-- } else if ( path_prefix[ 1 ] == '/' ) { >-- tran_format = T_RELATIVE; >-- } else { >-- tran_format = T_ABSOLUTE; >-- } >-- } else { >-- tran_format = T_ABSOLUTE; >-- } >-- >-- if ( radstat( path_prefix, &st, &type, &afinfo ) != 0 ) { >-- perror( path_prefix ); >-- exit( 2 ); >-- } >-- >-- if (( dotfd = open( ".", O_RDONLY, 0 )) < 0 ) { >-- perror( "OOPS!" ); >-- exit( 2 ); >-- } >-- >-- /* initialize the transcripts */ >-- transcript_init( kfile, K_CLIENT ); >-- >-- fs_walk( path_prefix, &st, &type, &afinfo, 0, finish, 0 ); >-- >-- if ( finish > 0 ) { >-- printf( "%%%d\n", ( int )finish ); >-- } >-- >-- /* free the transcripts */ >-- transcript_free( ); >-- hardlink_free( ); >-+ fsdiff( argv[ optind ], kfile, 0, finish, 0 ); >- >- /* close the output file */ >- fclose( outtran ); >diff -ruN ./files/patch-ktcheck.c /root/radmind.new/files/patch-ktcheck.c >--- ./files/patch-ktcheck.c 2014-07-12 05:31:02.000000000 -0400 >+++ /root/radmind.new/files/patch-ktcheck.c 1969-12-31 19:00:00.000000000 -0500 >@@ -1,20 +0,0 @@ >---- ./ktcheck.c.orig 2010-12-13 04:42:49.000000000 +0100 >-+++ ./ktcheck.c 2014-06-29 12:15:04.245544128 +0200 >-@@ -459,7 +459,7 @@ >- perror( "Incorrect number of arguments\n" ); >- return( 2 ); >- } >-- times.modtime = atoi( targv[ 5 ] ); >-+ times.modtime = strtotimet( targv[ 5 ], NULL, 10 ); >- times.actime = time( NULL ); >- >- if (( stat( path, &st )) != 0 ) { >-@@ -506,7 +506,7 @@ >- needupdate = 1; >- } >- } else { >-- if ( atoi( targv[ 5 ] ) != (int)st.st_mtime ) { >-+ if ( strtotimet( targv[ 5 ], NULL, 10 ) != st.st_mtime ) { >- needupdate = 1; >- } >- } >diff -ruN ./files/patch-lapply.c /root/radmind.new/files/patch-lapply.c >--- ./files/patch-lapply.c 2014-07-12 05:31:02.000000000 -0400 >+++ /root/radmind.new/files/patch-lapply.c 1969-12-31 19:00:00.000000000 -0500 >@@ -1,52 +0,0 @@ >---- ./lapply.c.orig 2010-12-13 04:42:49.000000000 +0100 >-+++ ./lapply.c 2014-06-29 12:15:04.246544121 +0200 >-@@ -651,27 +651,37 @@ >- filechecklist: >- if ( head == NULL ) { >- if ( unlink( path ) != 0 ) { >-- perror( path ); >-- goto error2; >-- } >-- if ( !quiet && !showprogress ) { >-- printf( "%s: deleted\n", path ); >-- } >-- if ( showprogress ) { >-- progressupdate( PROGRESSUNIT, path ); >-- } >-- } else { >-- if ( ischildcase( path, head->path, case_sensitive )) { >-- if ( unlink( path ) != 0 ) { >-+ if ( !force || errno != ENOENT ) { >- perror( path ); >- goto error2; >- } >-+ fprintf( stderr, "Warning: failed to remove %s: %s\n", >-+ path, strerror( errno )); >-+ } else { >- if ( !quiet && !showprogress ) { >- printf( "%s: deleted\n", path ); >- } >- if ( showprogress ) { >- progressupdate( PROGRESSUNIT, path ); >- } >-+ } >-+ } else { >-+ if ( ischildcase( path, head->path, case_sensitive )) { >-+ if ( unlink( path ) != 0 ) { >-+ if ( !force || errno != ENOENT ) { >-+ perror( path ); >-+ goto error2; >-+ } >-+ fprintf( stderr, "Warning: failed to remove %s: " >-+ "%s\n", path, strerror( errno )); >-+ } else { >-+ if ( !quiet && !showprogress ) { >-+ printf( "%s: deleted\n", path ); >-+ } >-+ if ( showprogress ) { >-+ progressupdate( PROGRESSUNIT, path ); >-+ } >-+ } >- } else { >- /* remove head */ >- if ( rmdir( head->path ) != 0 ) { >diff -ruN ./files/patch-largefile.h /root/radmind.new/files/patch-largefile.h >--- ./files/patch-largefile.h 2014-07-12 05:31:02.000000000 -0400 >+++ /root/radmind.new/files/patch-largefile.h 1969-12-31 19:00:00.000000000 -0500 >@@ -1,18 +0,0 @@ >---- ./largefile.h.orig 2010-12-13 04:42:49.000000000 +0100 >-+++ ./largefile.h 2014-06-29 12:15:04.246544121 +0200 >-@@ -18,3 +18,15 @@ >- #define strtoofft(x,y,z) (strtol((x),(y),(z))) >- #define PRIofft "l" >- #endif >-+ >-+#if SIZEOF_TIME_T == 8 >-+ #ifdef HAVE_STRTOLL >-+ #define strtotimet(x,y,z) (strtoll((x),(y),(z))) >-+ #else /* !HAVE_STRTOLL */ >-+ #define strtotimet(x,y,z) (strtol((x),(y),(z))) >-+ #endif /* HAVE_STRTOLL */ >-+ #define PRItimet "ll" >-+#else /* SIZEOF_TIME_T != 8 */ >-+ #define strtotimet(x,y,z) (strtol((x),(y),(z))) >-+ #define PRItimet "l" >-+#endif /* SIZEOF_TIME_T */ >diff -ruN ./files/patch-lcksum.c /root/radmind.new/files/patch-lcksum.c >--- ./files/patch-lcksum.c 2014-07-12 05:31:02.000000000 -0400 >+++ /root/radmind.new/files/patch-lcksum.c 1969-12-31 19:00:00.000000000 -0500 >@@ -1,35 +0,0 @@ >---- ./lcksum.c.orig 2010-12-13 04:42:49.000000000 +0100 >-+++ ./lcksum.c 2014-06-29 12:15:04.247544144 +0200 >-@@ -434,7 +434,7 @@ >- /* Check to see if checksum is listed in transcript */ >- if ( strcmp( targv[ 7 ], "-" ) != 0) { >- /* use mtime from server */ >-- fprintf( ufs, "%s %-37s %4s %5s %5s %9ld " >-+ fprintf( ufs, "%s %-37s %4s %5s %5s %9" PRItimet "d " >- "%7" PRIofft "d %s\n", >- targv[ 0 ], targv[ 1 ], targv[ 2 ], targv[ 3 ], >- targv[ 4 ], st.st_mtime, st.st_size, lcksum ); >-@@ -457,6 +457,12 @@ >- } >- free( line ); >- } >-+ if ( fclose( f ) != 0 ) { >-+ fprintf( stderr, "%s: fclose failed: %s\n", path, strerror( errno )); >-+ cleanup( updatetran, upath ); >-+ exit( 2 ); >-+ } >-+ >- if ( showprogress ) { >- progressupdate( bytes, "" ); >- } >-@@ -496,6 +502,10 @@ >- badline: >- exitval = 1; >- >-+ if ( fclose( f ) != 0 ) { >-+ fprintf( stderr, "%s: fclose failed: %s\n", path, strerror( errno )); >-+ } >-+ >- if ( checkall ) { >- goto done; >- } else { >diff -ruN ./files/patch-Makefile.in /root/radmind.new/files/patch-Makefile.in >--- ./files/patch-Makefile.in 2014-07-12 05:31:02.000000000 -0400 >+++ /root/radmind.new/files/patch-Makefile.in 1969-12-31 19:00:00.000000000 -0500 >@@ -1,98 +0,0 @@ >---- Makefile.in.orig 2010-12-13 04:43:49.000000000 +0100 >-+++ Makefile.in 2014-06-29 13:32:18.069225436 +0200 >-@@ -204,37 +204,37 @@ >- radmind : libsnet/libsnet.la ${RADMIND_OBJ} Makefile >- ${CC} ${CFLAGS} -o radmind ${RADMIND_OBJ} ${LDFLAGS} >- >--fsdiff : ${FSDIFF_OBJ} >-+fsdiff : libsnet/libsnet.la ${FSDIFF_OBJ} >- ${CC} ${CFLAGS} -o fsdiff ${FSDIFF_OBJ} ${LDFLAGS} >- >--ktcheck: ${KTCHECK_OBJ} >-+ktcheck: libsnet/libsnet.la ${KTCHECK_OBJ} >- ${CC} ${CFLAGS} -o ktcheck ${KTCHECK_OBJ} ${LDFLAGS} >- >--lapply: ${LAPPLY_OBJ} >-+lapply: libsnet/libsnet.la ${LAPPLY_OBJ} >- ${CC} ${CFLAGS} -o lapply ${LAPPLY_OBJ} ${LDFLAGS} >- >--lcksum: ${LCKSUM_OBJ} >-+lcksum: libsnet/libsnet.la ${LCKSUM_OBJ} >- ${CC} ${CFLAGS} -o lcksum ${LCKSUM_OBJ} ${LDFLAGS} >- >--lcreate: ${LCREATE_OBJ} >-+lcreate: libsnet/libsnet.la ${LCREATE_OBJ} >- ${CC} ${CFLAGS} -o lcreate ${LCREATE_OBJ} ${LDFLAGS} >- >--lmerge: ${LMERGE_OBJ} >-+lmerge: libsnet/libsnet.la ${LMERGE_OBJ} >- ${CC} ${CFLAGS} -o lmerge ${LMERGE_OBJ} ${LDFLAGS} >- >--lfdiff: ${LFDIFF_OBJ} >-+lfdiff: libsnet/libsnet.la ${LFDIFF_OBJ} >- ${CC} ${CFLAGS} -o lfdiff ${LFDIFF_OBJ} ${LDFLAGS} >- >--repo : ${REPO_OBJ} >-+repo: libsnet/libsnet.la ${REPO_OBJ} >- ${CC} ${CFLAGS} -o repo ${REPO_OBJ} ${LDFLAGS} >- >- t2pkg: ${T2PKG_OBJ} >- ${CC} ${CFLAGS} -o t2pkg ${T2PKG_OBJ} ${LDFLAGS} >- >--twhich: ${TWHICH_OBJ} >-+twhich: libsnet/libsnet.la ${TWHICH_OBJ} >- ${CC} ${CFLAGS} -o twhich ${TWHICH_OBJ} ${LDFLAGS} >- >--lsort: ${LSORT_OBJ} >-+lsort: libsnet/libsnet.la ${LSORT_OBJ} >- ${CC} ${CFLAGS} -o lsort ${LSORT_OBJ} ${LDFLAGS} >- >- FRC : >-@@ -259,7 +259,7 @@ >- (cd .. && tar cvfz ${DISTDIR}.tar.gz ${DISTDIR}) >- >- rash : FRC >-- -mkdir tmp >-+ -mkdir -p tmp >- sed -e 's@_RADMIND_HOST@${RADMIND_HOST}@g' \ >- -e 's@_RADMIND_AUTHLEVEL@${RADMIND_AUTHLEVEL}@g' \ >- -e 's@_RADMIND_PREAPPLY@${PREAPPLYDIR}@g' \ >-@@ -273,8 +273,7 @@ >- ${srcdir}/ra.sh > tmp/ra.sh; >- >- man : FRC >-- -mkdir tmp >-- -mkdir tmp/man >-+ -mkdir -p tmp/man >- pwd >- for i in ${MANTARGETS}; do \ >- sed -e 's@_RADMIND_PATH@${RADMINDDIR}@g' \ >-@@ -290,23 +289,22 @@ >- install : all man rash >- -mkdir -p ${DESTDIR}/${exec_prefix} >- -mkdir -p ${DESTDIR}/${SBINDIR} >-- ${INSTALL} -m 0755 -c radmind ${DESTDIR}/${SBINDIR}/ >-+ ${INSTALL} -s -m 0755 -c radmind ${DESTDIR}/${SBINDIR}/ >- -mkdir -p ${DESTDIR}/${BINDIR} >- for i in ${BINTARGETS}; do \ >-- ${INSTALL} -m 0755 -c $$i ${DESTDIR}/${BINDIR}/; \ >-+ ${INSTALL} -s -m 0755 -c $$i ${DESTDIR}/${BINDIR}/; \ >- done >- ${INSTALL} -m 0755 -c tmp/ra.sh ${DESTDIR}/${BINDIR}/ >- -mkdir -p ${DESTDIR}/${prefix} >-- -mkdir -p ${DESTDIR}/${MANDIR} >-- -mkdir ${DESTDIR}/${MANDIR}/man1 >-+ -mkdir -p ${DESTDIR}/${MANDIR}/man1 >- for i in ${MAN1TARGETS}; do \ >- ${INSTALL} -m 0644 -c tmp/man/$$i ${DESTDIR}/${MANDIR}/man1/; \ >- done >-- -mkdir ${DESTDIR}/${MANDIR}/man5 >-+ -mkdir -p ${DESTDIR}/${MANDIR}/man5 >- for i in ${MAN5TARGETS}; do \ >- ${INSTALL} -m 0644 -c tmp/man/$$i ${DESTDIR}/${MANDIR}/man5/; \ >- done >-- -mkdir ${DESTDIR}/${MANDIR}/man8 >-+ -mkdir -p ${DESTDIR}/${MANDIR}/man8 >- for i in ${MAN8TARGETS}; do \ >- ${INSTALL} -m 0644 -c tmp/man/$$i ${DESTDIR}/${MANDIR}/man8/; \ >- done >diff -ruN ./files/patch-man__lcreate.1 /root/radmind.new/files/patch-man__lcreate.1 >--- ./files/patch-man__lcreate.1 2014-07-12 05:31:02.000000000 -0400 >+++ /root/radmind.new/files/patch-man__lcreate.1 1969-12-31 19:00:00.000000000 -0500 >@@ -1,15 +0,0 @@ >---- ./man/lcreate.1.orig 2010-12-13 04:50:53.000000000 +0100 >-+++ ./man/lcreate.1 2014-06-29 12:15:04.247544144 +0200 >-@@ -45,12 +45,6 @@ >- .sp >- If the -n option is given, no files or transcripts are uploaded. Instead, >- .B lcreate >--verifies that all files exist in the filesystem and have >--the same size as listed in the transcript. If used with the -c option, >--checksums are also verified. >--.sp >--If the -n option is given, no files or transcripts are uploaded. Instead, >--.B lcreate >- uses >- .BR access (2) >- to verify that all files in the transcript exist in the >diff -ruN ./files/patch-man__rash.1 /root/radmind.new/files/patch-man__rash.1 >--- ./files/patch-man__rash.1 2014-07-12 05:31:02.000000000 -0400 >+++ /root/radmind.new/files/patch-man__rash.1 1969-12-31 19:00:00.000000000 -0500 >@@ -1,38 +0,0 @@ >---- ./man/rash.1.orig 2010-12-13 04:50:53.000000000 +0100 >-+++ ./man/rash.1 2014-06-29 12:15:04.247544144 +0200 >-@@ -11,6 +11,10 @@ >- | >- .B -q >- ] [ >-+.BR \-C\ "generate" >-+| >-+.BI \-C\ checksum >-+] [ >- .B \-D >- .I workingdir >- ] [ >-@@ -120,6 +124,24 @@ >- .B \-c >- use sha1 checksums. >- .TP 19 >-+.BR \-C\ "generate" >-+Print a sha1 checksum of the difference transcript of applied changes. For use with >-+.IR auto , >-+.IR force >-+or >-+.IR update . >-+.TP 19 >-+.BI \-C\ checksum >-+In >-+.I auto >-+mode, exit with an error if the checksum of the difference transcript to be applied does not match >-+.IR checksum . >-+In >-+.I update >-+or >-+.I force >-+mode, warn if the two do not match. >-+.TP 19 >- .BI \-D\ workingdir >- change to >- .I workingdir >diff -ruN ./files/patch-mkdirs.c /root/radmind.new/files/patch-mkdirs.c >--- ./files/patch-mkdirs.c 2014-07-12 05:31:02.000000000 -0400 >+++ /root/radmind.new/files/patch-mkdirs.c 1969-12-31 19:00:00.000000000 -0500 >@@ -1,13 +0,0 @@ >---- ./mkdirs.c.orig 2010-12-13 04:42:49.000000000 +0100 >-+++ ./mkdirs.c 2014-06-29 12:15:04.247544144 +0200 >-@@ -37,7 +37,9 @@ >- if ( mkdir( path, 0777 ) == 0 ) { >- break; >- } >-- if ( errno != ENOENT ) { >-+ if ( errno == EEXIST ) { >-+ break; >-+ } else if ( errno != ENOENT ) { >- return( -1 ); >- } >- q = p; >diff -ruN ./files/patch-ra.sh /root/radmind.new/files/patch-ra.sh >--- ./files/patch-ra.sh 2014-07-12 05:31:02.000000000 -0400 >+++ /root/radmind.new/files/patch-ra.sh 1969-12-31 19:00:00.000000000 -0500 >@@ -1,139 +0,0 @@ >---- ./ra.sh.orig 2010-12-13 04:42:49.000000000 +0100 >-+++ ./ra.sh 2014-06-29 12:15:04.248542975 +0200 >-@@ -91,7 +91,7 @@ >- } >- >- usage() { >-- $ECHO "Usage: $0 [ -ctV ] [ -D working-directory ] [ -h server ] [ -p port ] [ -w authlevel ] { trip | update | create | auto | force | checkout | checkin } [ /path/or/file ]" >&2 >-+ $ECHO "Usage: $0 [ -cIltV ] [ -% | -q ] [ -C \"generate\" | -C <checksum> ] [ -D working-directory ] [ -h server ] [ -p port ] [ -w authlevel ] { trip | update | create | auto | force | checkout | checkin } [ /path/or/file ]" >&2 >- exit 1 >- } >- >-@@ -128,6 +128,38 @@ >- fi >- } >- >-+cksum_generate() { >-+ if [ -n "$FSDIFF_CHECKSUM" ]; then >-+ FTMP_CHECKSUM=`openssl sha1 ${FTMP} | awk '{ print $2 }'` >-+ fi >-+} >-+ >-+cksum_compare() { >-+ if [ -n "$FSDIFF_CHECKSUM" -a \ >-+ "$FSDIFF_CHECKSUM" != "generate" -a \ >-+ "$FSDIFF_CHECKSUM" != "$FTMP_CHECKSUM" ]; then >-+ return 1 >-+ fi >-+ >-+ return 0 >-+} >-+ >-+cksum_print() { >-+ if [ -n "$FSDIFF_CHECKSUM" ]; then >-+ $ECHO "Difference transcript checksum: $FTMP_CHECKSUM" >-+ fi >-+} >-+ >-+cksum_mismatch() { >-+ if [ -n "$FSDIFF_CHECKSUM" ]; then >-+ $ECHO >-+ $ECHO "**** Difference transcript checksum mismatch!" >-+ $ECHO "**** Expected: $FSDIFF_CHECKSUM" >-+ $ECHO "**** Actual: $FTMP_CHECKSUM" >-+ #ECHO >-+ fi >-+} >-+ >- update() { >- opt="$1" >- kopt= >-@@ -211,6 +243,11 @@ >- fi >- if [ x"${opt}" = x"interactive" ]; then >- while [ 1 ]; do >-+ cksum_generate >-+ if ! cksum_compare; then >-+ cksum_mismatch >-+ fi >-+ >- if [ x"${can_edit}" = x"yes" ]; then >- $ECHO -n "(e)dit difference transcript, " >- fi >-@@ -248,7 +285,8 @@ >- >- lapply ${CASE} ${PROGRESS} ${NETOPTS} ${CHECKSUM} ${FTMP} >- case "$?" in >-- 0) ;; >-+ 0) cksum_print >-+ ;; >- >- *) if [ x"$opt" = x"hook" ]; then >- $ECHO -n "Applying changes failed, trying again " >-@@ -284,7 +322,7 @@ >- . "${DEFAULTS}" >- fi >- >--while getopts %cD:h:Ilp:qr:tU:Vw: opt; do >-+while getopts %C:cD:h:Ilp:qr:tU:Vw: opt; do >- case $opt in >- %) PROGRESS="-%" >- FPROGRESS="-%" >-@@ -293,6 +331,13 @@ >- q) PROGRESS="-q" >- ;; >- >-+ C) FSDIFF_CHECKSUM="$OPTARG" >-+ if ! type openssl >/dev/null 2>&1; then >-+ $ECHO "-C requires openssl, but no openssl found in PATH $PATH" >-+ cleanup_and_exit >-+ fi >-+ ;; >-+ >- c) CHECKSUM="-csha1" >- ;; >- >-@@ -524,6 +569,14 @@ >- cleanup >- exit 1 >- fi >-+ >-+ cksum_generate >-+ if ! cksum_compare; then >-+ $ECHO "Auto failure: `hostname`: difference cksum mismatch" >-+ cksum_mismatch >-+ cleanup_and_exit >-+ fi >-+ >- dopreapply ${FTMP} >- if [ -s ${FTMP} ]; then >- lapply ${NETOPTS} ${CASE} ${PROGRESS} \ >-@@ -532,6 +585,7 @@ >- 0) >- $ECHO Auto update: `hostname` >- cat ${FTMP} >-+ cksum_print >- dopostapply ${FTMP} >- cleanup >- break >-@@ -588,14 +642,17 @@ >- exit 0 >- fi >- >-+ cksum_generate >-+ cksum_compare || cksum_mismatch >- dopreapply ${FTMP} >- lapply ${CASE} ${PROGRESS} ${NETOPTS} ${CHECKSUM} ${FTMP} >- case "$?" in >-- 0) ;; >-+ 0) cksum_print >-+ ;; >- >- *) cleanup >-- exit $? >-- ;; >-+ exit $? >-+ ;; >- esac >- dopostapply ${FTMP} >- >diff -ruN ./files/patch-README /root/radmind.new/files/patch-README >--- ./files/patch-README 2014-07-12 05:31:02.000000000 -0400 >+++ /root/radmind.new/files/patch-README 1969-12-31 19:00:00.000000000 -0500 >@@ -1,46 +0,0 @@ >---- ./README.orig 2010-12-13 04:42:49.000000000 +0100 >-+++ ./README 2014-06-29 12:15:04.242543988 +0200 >-@@ -72,25 +72,25 @@ >- % "env CPPFLAGS=-I/usr/kerberos/include ./configure" >- >- ----------------- >--Building from CVS >-+Building from git >- ----------------- >- The Radmind Development Team occasionally asks for help testing a new feature >- or bug fix. The best way to assist is to download the source code from the >--CVS repository and build it manually. The following steps will result in >--a build from CVS. >-+git repository and build it manually. The following steps will result in >-+a build from git. >- >--1) Download the source from CVS: >-+1) Download the source from git: >- >--cvs -d :pserver:anonymous@radmind.cvs.sourceforge.net:/cvsroot/radmind \ >-- checkout radmind >-+ git clone git://radmind.git.sourceforge.net/gitroot/radmind/radmind >- >- 2) Move into the new radmind directory: >- >--cd radmind >-+ cd radmind >- >--3) Download libsnet[1], the network library Radmind uses: >-+3) Checkout all required submodules [1]: >- >--sh bin/getsnet >-+ git submodule init >-+ git submodule update >- >- 4) Follow steps 2 and 3 from "More detailed instructions" for building, above. >- >-@@ -115,4 +115,7 @@ >- ---------- >- References >- ---------- >--[1]: http://sourceforge.net/projects/libsnet >-+[1]: Current submodules: >-+ >-+ * libsnet, a networking library with TLS support >-+ http://sourceforge.net/projects/libsnet >diff -ruN ./files/patch-t2pkg.c /root/radmind.new/files/patch-t2pkg.c >--- ./files/patch-t2pkg.c 2014-07-12 05:31:02.000000000 -0400 >+++ /root/radmind.new/files/patch-t2pkg.c 1969-12-31 19:00:00.000000000 -0500 >@@ -1,46 +0,0 @@ >---- ./t2pkg.c.orig 2010-12-13 04:42:49.000000000 +0100 >-+++ ./t2pkg.c 2014-06-29 12:15:04.248542975 +0200 >-@@ -38,6 +38,7 @@ >- extern off_t lsize; >- extern char *version; >- >-+int tran_format = -1; >- int cksum = 0; >- int force = 0; >- int case_sensitive = 1; >-@@ -718,31 +719,23 @@ >- } >- >- /* create the destination path */ >-- if ( snprintf( tmp, MAXPATHLEN, "%s/%s", dstdir, t->t_pinfo.pi_name ) >-+ if ( snprintf( dst, MAXPATHLEN, "%s/%s", dstdir, t->t_pinfo.pi_name ) >- >= MAXPATHLEN ) { >- fprintf( stderr, "%s/%s: path too long\n", dstdir, >- t->t_pinfo.pi_name ); >- exit( 2 ); >- } >-- if ( mkdirs( tmp ) < 0 ) { >-- fprintf( stderr, "mkdirs %s: %s\n", tmp, strerror( errno )); >-- } >-- if ( realpath( tmp, dst ) == NULL ) { >-- fprintf( stderr, "realpath %s: %s\n", tmp, strerror( errno )); >-- exit( 2 ); >-+ if ( mkdirs( dst ) < 0 ) { >-+ fprintf( stderr, "mkdirs %s: %s\n", dst, strerror( errno )); >- } >- >- /* and the source path */ >-- if ( snprintf( tmp, MAXPATHLEN, "%s/%s", root, t->t_pinfo.pi_name ) >-+ if ( snprintf( src, MAXPATHLEN, "%s/%s", root, t->t_pinfo.pi_name ) >- >= MAXPATHLEN ) { >- fprintf( stderr, "%s/%s: path too long\n", dstdir, >- t->t_pinfo.pi_name ); >- exit( 2 ); >- } >-- if ( realpath( tmp, src ) == NULL ) { >-- fprintf( stderr, "realpath %s: %s\n", tmp, strerror( errno )); >-- exit( 2 ); >-- } >- >- if ( local_update( t, dst, src, where ) != 0 ) { >- /* XXX is this really a good idea? */ >diff -ruN ./files/patch-transcript.c /root/radmind.new/files/patch-transcript.c >--- ./files/patch-transcript.c 2014-07-12 05:31:02.000000000 -0400 >+++ /root/radmind.new/files/patch-transcript.c 1969-12-31 19:00:00.000000000 -0500 >@@ -1,133 +0,0 @@ >---- ./transcript.c.orig 2010-12-13 04:42:49.000000000 +0100 >-+++ ./transcript.c 2014-06-29 12:15:04.249543651 +0200 >-@@ -45,7 +45,7 @@ >- >- char *path_prefix = NULL; >- int edit_path; >--int skip; >-+int skip = 0; >- int cksum; >- int fs_minus; >- int exclude_warnings = 0; >-@@ -271,7 +271,7 @@ >- tran->t_pinfo.pi_stat.st_mode = strtol( argv[ 2 ], NULL, 8 ); >- tran->t_pinfo.pi_stat.st_uid = atoi( argv[ 3 ] ); >- tran->t_pinfo.pi_stat.st_gid = atoi( argv[ 4 ] ); >-- tran->t_pinfo.pi_stat.st_mtime = atoi( argv[ 5 ] ); >-+ tran->t_pinfo.pi_stat.st_mtime = strtotimet( argv[ 5 ], NULL, 10 ); >- tran->t_pinfo.pi_stat.st_size = strtoofft( argv[ 6 ], NULL, 10 ); >- if ( tran->t_type != T_NEGATIVE ) { >- if (( cksum ) && ( strcmp( "-", argv [ 7 ] ) == 0 )) { >-@@ -436,12 +436,13 @@ >- * but the corresponding transcript is negative, hence, retain >- * the file system's mtime. Woof! >- */ >-- fprintf( outtran, "%c %-37s\t%.4lo %5d %5d %9d %7" PRIofft "d %s\n", >-+ fprintf( outtran, "%c %-37s\t%.4lo %5d %5d %9" PRItimet "d " >-+ "%7" PRIofft "d %s\n", >- cur->pi_type, epath, >- (unsigned long)( T_MODE & cur->pi_stat.st_mode ), >- (int)cur->pi_stat.st_uid, (int)cur->pi_stat.st_gid, >- ( flag == PR_STATUS_NEG ) ? >-- (int)fs->pi_stat.st_mtime : (int)cur->pi_stat.st_mtime, >-+ fs->pi_stat.st_mtime : cur->pi_stat.st_mtime, >- cur->pi_stat.st_size, cur->pi_cksum_b64 ); >- break; >- >-@@ -723,7 +724,7 @@ >- if ( begin_tran->t_type != T_SPECIAL && >- t_exclude( begin_tran->t_pinfo.pi_name )) { >- if ( exclude_warnings ) { >-- fprintf( stderr, "Warning: excluding %s\n", >-+ printf( "#! Warning: excluding %s\n", >- begin_tran->t_pinfo.pi_name ); >- } >- transcript_parse( begin_tran ); >-@@ -769,7 +770,7 @@ >- if ( list_size( special_list ) <= 0 >- || list_check( special_list, path ) == 0 ) { >- if ( exclude_warnings ) { >-- fprintf( stderr, "Warning: excluding %s\n", path ); >-+ printf( "#! Warning: excluding %s\n", path ); >- } >- >- /* move the transcripts ahead */ >-@@ -949,7 +950,7 @@ >- */ >- t_new( T_NULL, NULL, NULL, NULL ); >- >-- if ( skip ) { >-+ if ( skip == T_SKIP_ALL ) { >- return; >- } >- >-@@ -985,15 +986,17 @@ >- exit( 2 ); >- } >- >-- if (( list_size( special_list ) > 0 ) && ( location == K_CLIENT )) { >-- /* open the special transcript if there were any special files */ >-- if ( strlen( kdir ) + strlen( special ) + 2 > MAXPATHLEN ) { >-- fprintf( stderr, >-- "special path too long: %s%s\n", kdir, special ); >-- exit( 2 ); >-+ if ( !( skip & T_SKIP_SPECIAL )) { >-+ if (( list_size( special_list ) > 0 ) && ( location == K_CLIENT )) { >-+ /* open the special transcript if there were any special files */ >-+ if ( strlen( kdir ) + strlen( special ) + 2 > MAXPATHLEN ) { >-+ fprintf( stderr, >-+ "special path too long: %s%s\n", kdir, special ); >-+ exit( 2 ); >-+ } >-+ sprintf( fullpath, "%s%s", kdir, special ); >-+ t_new( T_SPECIAL, fullpath, special, "special" ); >- } >-- sprintf( fullpath, "%s%s", kdir, special ); >-- t_new( T_SPECIAL, fullpath, special, "special" ); >- } >- >- if ( tran_head->t_type == T_NULL && edit_path == APPLICABLE ) { >-@@ -1108,6 +1111,10 @@ >- break; >- >- case 'n': /* negative */ >-+ if ( skip & T_SKIP_NEGATIVE ) { >-+ break; >-+ } >-+ >- if ( minus ) { >- t_remove( T_NEGATIVE, av[ 1 ] ); >- } else { >-@@ -1116,6 +1123,10 @@ >- break; >- >- case 'p': /* positive */ >-+ if ( skip & T_SKIP_POSITIVE ) { >-+ break; >-+ } >-+ >- if ( minus ) { >- t_remove( T_POSITIVE, av[ 1 ] ); >- } else { >-@@ -1124,6 +1135,10 @@ >- break; >- >- case 'x': /* exclude */ >-+ if ( skip & T_SKIP_EXCLUDES ) { >-+ break; >-+ } >-+ >- if (( d_pattern = decode( av[ 1 ] )) == NULL ) { >- fprintf( stderr, "%s: line %d: decode buffer too small\n", >- kfile, linenum ); >-@@ -1149,6 +1164,10 @@ >- break; >- >- case 's': /* special */ >-+ if ( skip & T_SKIP_SPECIAL ) { >-+ break; >-+ } >-+ >- path = av[ 1 ]; >- >- /* Convert path to match transcript type */ >diff -ruN ./files/patch-transcript.h /root/radmind.new/files/patch-transcript.h >--- ./files/patch-transcript.h 2014-07-12 05:31:02.000000000 -0400 >+++ /root/radmind.new/files/patch-transcript.h 1969-12-31 19:00:00.000000000 -0500 >@@ -1,17 +0,0 @@ >---- ./transcript.h.orig 2010-12-13 04:42:49.000000000 +0100 >-+++ ./transcript.h 2014-06-29 12:15:04.249543651 +0200 >-@@ -39,6 +39,14 @@ >- extern FILE *outtran; >- extern char *path_prefix; >- >-+ >-+#define T_SKIP_POSITIVE (1 << 1) >-+#define T_SKIP_NEGATIVE (1 << 2) >-+#define T_SKIP_SPECIAL (1 << 3) >-+#define T_SKIP_EXCLUDES (1 << 4) >-+#define T_SKIP_ALL (T_SKIP_POSITIVE | T_SKIP_NEGATIVE | \ >-+ T_SKIP_SPECIAL | T_SKIP_EXCLUDES) >-+ >- struct pathinfo { >- char pi_type; >- int pi_minus; >diff -ruN ./files/patch-update.c /root/radmind.new/files/patch-update.c >--- ./files/patch-update.c 2014-07-12 05:31:02.000000000 -0400 >+++ /root/radmind.new/files/patch-update.c 1969-12-31 19:00:00.000000000 -0500 >@@ -1,19 +0,0 @@ >---- ./update.c.orig 2010-12-13 04:42:49.000000000 +0100 >-+++ ./update.c 2014-06-29 12:15:04.249543651 +0200 >-@@ -26,6 +26,7 @@ >- #include "update.h" >- #include "code.h" >- #include "radstat.h" >-+#include "largefile.h" >- #include "transcript.h" >- #include "progress.h" >- #include "mkdirs.h" >-@@ -73,7 +74,7 @@ >- >- mode = strtol( targv[ 2 ], (char **)NULL, 8 ); >- >-- times.modtime = atoi( targv[ 5 ] ); >-+ times.modtime = strtotimet( targv[ 5 ], NULL, 10 ); >- if ( times.modtime != st->st_mtime ) { >- times.actime = st->st_atime; >- if ( utime( path, × ) != 0 ) { >diff -ruN ./Makefile /root/radmind.new/Makefile >--- ./Makefile 2017-03-15 10:45:30.000000000 -0400 >+++ /root/radmind.new/Makefile 2018-10-18 18:26:55.323773000 -0400 >@@ -2,10 +2,10 @@ > # $FreeBSD: head/sysutils/radmind/Makefile 436247 2017-03-15 14:45:30Z mat $ > > PORTNAME= radmind >-PORTVERSION= 1.14.1 >-PORTREVISION= 2014052201 >+PORTVERSION= 1.15.1 >+PORTREVISION= 2019101801 > CATEGORIES= sysutils >-MASTER_SITES= SF/${PORTNAME}/${PORTNAME}/${PORTNAME}-${PORTVERSION} >+MASTER_SITES= https://github.com/voretaq7/${PORTNAME}/releases/download/${PORTNAME}-${PORTVERSION}/ > > MAINTAINER= mikeg@bsd-box.net > COMMENT= Utility for administering filesystem changes >@@ -31,7 +31,7 @@ > PLIST_SUB= RADMIND_BASE_DIR=${RADMIND_BASE_DIR:S@/@@} RADMINUSER=${RADMINUSER} > SUB_FILES+= pkg-install pkg-message > >-DOCS= COPYRIGHT README SPEC >+DOCS= COPYRIGHT SPEC README.md > > OPTIONS_DEFINE= DOCS > IGNORE_TIMESTAMPS_DESC= Add '-t' option to fsdiff >diff -ruN ./pkg-plist /root/radmind.new/pkg-plist >--- ./pkg-plist 2015-07-15 18:56:16.000000000 -0400 >+++ /root/radmind.new/pkg-plist 2018-10-18 17:47:13.886024000 -0400 >@@ -24,7 +24,7 @@ > man/man5/applefile.5.gz > man/man8/radmind.8.gz > %%PORTDOCS%%%%DOCSDIR%%/COPYRIGHT >-%%PORTDOCS%%%%DOCSDIR%%/README >+%%PORTDOCS%%%%DOCSDIR%%/README.md > %%PORTDOCS%%%%DOCSDIR%%/SPEC > @sample(,,700) /%%RADMIND_BASE_DIR%%/config.sample > @owner %%RADMINUSER%%
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Flags:
mikeg:
maintainer-approval+
Actions:
View
|
Diff
Attachments on
bug 232219
:
198092
| 198378