]> arthur.barton.de Git - netatalk.git/commitdiff
* Add Apple II boot support for Appl IIe (with workstation card) and
authorjmarcus <jmarcus>
Sat, 11 Jan 2003 17:26:05 +0000 (17:26 +0000)
committerjmarcus <jmarcus>
Sat, 11 Jan 2003 17:26:05 +0000 (17:26 +0000)
  Apple IIgs using built-in LocalTalk [1]
* Fix some ProDOS file attribute problems
* Fix the RedHat RPM build for RH 7.3 and 8.0
* Fix a few other build nits

Submitted by: Steven N. Hirsch <shirsch@adelphia.net>
Obtained from: Marsha Jackson [1]

15 files changed:
autogen.sh
config/netatalk.conf
configure.in
contrib/Makefile.am
contrib/a2boot/.cvsignore [new file with mode: 0644]
contrib/a2boot/COPYRIGHT [new file with mode: 0644]
contrib/a2boot/Makefile.am [new file with mode: 0644]
contrib/a2boot/VERSION [new file with mode: 0644]
contrib/a2boot/a2boot.c [new file with mode: 0644]
distrib/initscripts/rc.atalk.redhat.tmpl
distrib/rpm/buildrpm
distrib/rpm/netatalk-redhat.spec
distrib/rpm/netatalk-rpmbuild.patch [new file with mode: 0644]
etc/afpd/file.c
etc/psf/Makefile.am

index 99c3c775882b7145e1c06e04ef8e04da38a8d3c6..5072645264a7cb00430265cde27f6e235fc9abbe 100755 (executable)
@@ -4,7 +4,7 @@
 libtoolize --copy --force && \
        aclocal -I macros $ACLOCAL_FLAGS && \
        autoheader && \
-       automake --include-deps --add-missing --foreign && \
+       automake --copy --include-deps --add-missing --foreign && \
        autoconf
 
 # just in case automake generated errors...
index d775d52280299226bd86636719126be77fc46ab1..5a30697de135d8bc1602570a8d6ff79f42fbfaa7 100644 (file)
@@ -21,6 +21,7 @@ ATALKD_RUN=yes
 PAPD_RUN=yes
 AFPD_RUN=yes
 TIMELORD_RUN=no
+A2BOOT_RUN=no
 
 # Control whether the daemons are started in the background
 ATALK_BGROUND=no
index 860ab7574e3ce27b6dc9d5d37947982d7eaa1180..d7018b9cc177ca6441023dfdafc226c78d933037 100644 (file)
@@ -1,4 +1,4 @@
-dnl $Id: configure.in,v 1.175 2003-01-04 21:41:48 jmarcus Exp $
+dnl $Id: configure.in,v 1.176 2003-01-11 17:26:05 jmarcus Exp $
 dnl configure.in for netatalk
 
 AC_INIT(bin/adv1tov2/adv1tov2.c)
@@ -391,6 +391,16 @@ AC_ARG_ENABLE(timelord,
 )
 AC_MSG_RESULT([$compile_timelord])
 
+dnl ----- a2boot compilation (disabled by default)
+AC_MSG_CHECKING([whether a2boot should be compiled])
+compile_a2boot=no
+AC_ARG_ENABLE(a2boot,
+       [  --enable-a2boot       enable compilation of Apple2 boot server],
+       [compile_a2boot="$enableval"],
+       [compile_a2boot="no"]
+)
+AC_MSG_RESULT([$compile_a2boot])
+
 AC_ARG_WITH(uams-path,
        [  --with-uams-path=PATH   path to UAMs [[PKGCONF/uams]]],
        uams_path="$withval",
@@ -652,6 +662,7 @@ AC_SUBST(OVERWRITE_CONFIG)
 
 AM_CONDITIONAL(SOLARIS_MODULE, test x$solaris_module = xyes)
 AM_CONDITIONAL(COMPILE_TIMELORD, test x$compile_timelord = xyes)
+AM_CONDITIONAL(COMPILE_A2BOOT, test x$compile_a2boot = xyes)
 AM_CONDITIONAL(USE_DHX, test x$compile_ssl = xyes)
 AM_CONDITIONAL(USE_KERBEROS, test x$compile_kerberos = xyes)
 AM_CONDITIONAL(USE_PAM_SO, test x$use_pam_so = xyes)
@@ -695,6 +706,7 @@ AC_OUTPUT([Makefile
        contrib/shell_utils/cleanappledouble.pl
        contrib/shell_utils/netatalkshorternamelinks.pl
        contrib/timelord/Makefile
+       contrib/a2boot/Makefile
        distrib/Makefile
        distrib/config/Makefile
        distrib/config/netatalk-config
index bc0a12acbb0791a378f29f140fac2dd9c3f6a81c..633257c3df66f778a1cfc7ea6a554ace9a27ab45 100644 (file)
@@ -6,6 +6,12 @@ else
 TIMELORD =
 endif
 
-SUBDIRS = macusers nu printing shell_utils ${TIMELORD}
+if COMPILE_A2BOOT
+A2BOOT = a2boot
+else
+A2BOOT =
+endif
+
+SUBDIRS = macusers nu printing shell_utils ${TIMELORD} ${A2BOOT}
 
 EXTRA_DIST = ICDumpSuffixMap
diff --git a/contrib/a2boot/.cvsignore b/contrib/a2boot/.cvsignore
new file mode 100644 (file)
index 0000000..38052b9
--- /dev/null
@@ -0,0 +1,5 @@
+Makefile
+Makefile.in
+a2boot
+.deps
+.libs
diff --git a/contrib/a2boot/COPYRIGHT b/contrib/a2boot/COPYRIGHT
new file mode 100644 (file)
index 0000000..c698aba
--- /dev/null
@@ -0,0 +1,43 @@
+/*
+       Recoding circa Dec 2002-early 2003          by Marsha Jackson
+       support booting of Apple 2 computers,   with aid of Steven N. Hirsch
+       Code is copyrighted as listed below...
+       M. Jackson is establishing no personal copyright
+       or personal restrictions on this software.  Only the below rights exist
+*/
+
+/*
+ * Copyright (c) 1990,1994 Regents of The University of Michigan.
+ * All Rights Reserved.
+ *
+ * Permission to use, copy, modify, and distribute this software and
+ * its documentation for any purpose and without fee is hereby granted,
+ * provided that the above copyright notice appears in all copies and
+ * that both that copyright notice and this permission notice appear
+ * in supporting documentation, and that the name of The University
+ * of Michigan not be used in advertising or publicity pertaining to
+ * distribution of the software without specific, written prior
+ * permission. This software is supplied as is without expressed or
+ * implied warranties of any kind.
+ *
+ *     Research Systems Unix Group
+ *     The University of Michigan
+ *     c/o Wesley Craig
+ *     535 W. William Street
+ *     Ann Arbor, Michigan
+ *     +1 313 764 2278
+ *     netatalk@umich.edu
+ */
+
+/*
+ * The "timelord protocol" was reverse engineered from Timelord,
+ * distributed with CAP, Copyright (c) 1990, The University of
+ * Melbourne.  The following copyright, supplied by The University
+ * of Melbourne, may apply to this code:
+ *
+ *     This version of timelord.c is based on code distributed
+ *     by the University of Melbourne as part of the CAP package.
+ *
+ *     The tardis/Timelord package for Macintosh/CAP is
+ *     Copyright (c) 1990, The University of Melbourne.
+ */
diff --git a/contrib/a2boot/Makefile.am b/contrib/a2boot/Makefile.am
new file mode 100644 (file)
index 0000000..85d92be
--- /dev/null
@@ -0,0 +1,16 @@
+# Makefile.am for contrib/a2boot/
+
+sbin_PROGRAMS = a2boot
+
+a2boot_SOURCES = a2boot.c
+a2boot_LDADD = $(top_builddir)/libatalk/libatalk.la
+
+LIBS = @LIBS@
+
+EXTRA_DIST = COPYRIGHT README VERSION
+
+CFLAGS = -I$(top_srcdir)/include -I$(top_srcdir)/sys \
+        @CFLAGS@ @SLP_CFLAGS@ \
+        -D_PATH_A_GS_BLOCKS=\"$(PKGCONFDIR)/a2boot/ProDOS16\ Boot\ Blocks\" \
+        -D_PATH_A_2E_BLOCKS=\"$(PKGCONFDIR)/a2boot/Apple\ :2f:2fe\ Boot\ Blocks\" \
+        -D_PATH_P16_IMAGE=\"$(PKGCONFDIR)/a2boot/ProDOS16\ Image\"
diff --git a/contrib/a2boot/VERSION b/contrib/a2boot/VERSION
new file mode 100644 (file)
index 0000000..8e8299d
--- /dev/null
@@ -0,0 +1 @@
+2.4.2
diff --git a/contrib/a2boot/a2boot.c b/contrib/a2boot/a2boot.c
new file mode 100644 (file)
index 0000000..4f369b1
--- /dev/null
@@ -0,0 +1,319 @@
+/*
+ * $Id: a2boot.c,v 1.1 2003-01-11 17:26:06 jmarcus Exp $
+ *   Apple II boot support code.       with aid of Steven N. Hirsch
+ *
+ * based on timelord 1.6 so below copyrights still apply
+ *
+ * Copyright (c) 1990,1992 Regents of The University of Michigan.
+ * All Rights Reserved. See COPYRIGHT.
+ *
+ * The "timelord protocol" was reverse engineered from Timelord,
+ * distributed with CAP, Copyright (c) 1990, The University of
+ * Melbourne.  The following copyright, supplied by The University
+ * of Melbourne, may apply to this code:
+ *
+ *     This version of timelord.c is based on code distributed
+ *     by the University of Melbourne as part of the CAP package.
+ *
+ *     The tardis/Timelord package for Macintosh/CAP is
+ *     Copyright (c) 1990, The University of Melbourne.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif /* HAVE_CONFIG_H */
+
+#include <sys/param.h>
+#include <sys/types.h>
+#include <sys/file.h>
+#include <sys/uio.h>
+
+#include <unistd.h>
+
+#include <netatalk/at.h>
+#include <netatalk/endian.h>
+#include <atalk/atp.h>
+#include <atalk/nbp.h>
+
+#ifdef HAVE_SGTTY_H
+#include <sgtty.h>
+#endif /* HAVE_SGTTY_H */
+
+#include <errno.h>
+#include <signal.h>
+#include <atalk/logger.h>
+#include <stdio.h>
+#include <string.h>
+
+#ifdef HAVE_NETDB_H
+#include <netdb.h>
+#endif /* HAVE_NETDB_H */
+
+#ifdef HAVE_FCNTL_H
+#include <fcntl.h>
+#endif /* HAVE_FCNTL_H */
+#ifdef HAVE_SYS_FCNTL_H
+#include <sys/fcntl.h>
+#endif /* HAVE_SYS_FCNTL_H */
+
+#ifdef HAVE_TERMIOS_H
+#include <termios.h>
+#endif /* HAVE_TERMIOS_H */
+#ifdef HAVE_SYS_TERMIOS_H
+#include <sys/termios.h>
+#endif /* HAVE_SYS_TERMIOS_H */
+
+#define        TL_OK           '\0'
+#define TL_EOF         '\1'
+
+int    debug = 0;
+char   *bad = "Bad request!";
+char   buf[ 4624 ];
+char   *server;
+int    reqblklo,reqblkhi;
+
+long a2bootreq(char *fname);
+
+void usage( char *p )
+{
+    char       *s;
+
+    if (( s = rindex( p, '/' )) == NULL ) {
+       s = p;
+    } else {
+       s++;
+    }
+    fprintf( stderr, "Usage:\t%s -d -n nbpname\n", s );
+    exit( 1 );
+}
+
+/*
+ * Unregister ourself on signal.
+ */
+void
+goaway(int signal)
+{
+    int regerr;
+    regerr = nbp_unrgstr( server, "Apple //gs", "*", NULL );
+    regerr += nbp_unrgstr( server, "Apple //e Boot", "*", NULL );
+    regerr += nbp_unrgstr( server, "ProDOS16 Image", "*", NULL );
+    if ( regerr < 0 ) {
+       LOG(log_error, logtype_default, "Can't unregister Apple II boot files %s", server );
+       exit( 1 );
+    }
+    LOG(log_info, logtype_default, "going down" );
+    exit( 0 );
+}
+
+int main( int ac, char **av )
+{
+    ATP                atp;
+    struct sockaddr_at sat;
+    struct atp_block   atpb;
+    struct iovec       iov;
+    char       hostname[ MAXHOSTNAMELEN ];
+    char       *p;
+    int                c;
+    long       req, resp;
+    int        regerr;
+    extern char        *optarg;
+    extern int         optind;
+
+
+    if ( gethostname( hostname, sizeof( hostname )) < 0 ) {
+       perror( "gethostname" );
+       exit( 1 );
+    }
+    if (( server = index( hostname, '.' )) != 0 ) {
+       *server = '\0';
+    }
+    server = hostname;
+
+    while (( c = getopt( ac, av, "dn:" )) != EOF ) {
+       switch ( c ) {
+       case 'd' :
+           debug++;
+           break;
+       case 'n' :
+           server = optarg;
+           break;
+       default :
+           fprintf( stderr, "Unknown option -- '%c'\n", c );
+           usage( *av );
+       }
+    }
+
+    /*
+     * Disassociate from controlling tty.
+     */
+    if ( !debug ) {
+       int             i, dt;
+
+       switch ( fork()) {
+       case 0 :
+           dt = getdtablesize();
+           for ( i = 0; i < dt; i++ ) {
+               (void)close( i );
+           }
+           if (( i = open( "/dev/tty", O_RDWR )) >= 0 ) {
+               (void)ioctl( i, TIOCNOTTY, 0 );
+               setpgid( 0, getpid());
+               (void)close( i );
+           }
+           break;
+       case -1 :
+           perror( "fork" );
+           exit( 1 );
+       default :
+           exit( 0 );
+       }
+    }
+
+    if (( p = rindex( *av, '/' )) == NULL ) {
+       p = *av;
+    } else {
+       p++;
+    }
+
+#ifdef ultrix
+    openlog( p, LOG_PID );
+#else /* ultrix */
+    set_processname(p);
+    syslog_setup(log_debug, logtype_default, logoption_ndelay|logoption_pid, logfacility_daemon );
+#endif /* ultrix */
+
+    /* allocate memory */
+    memset (&sat.sat_addr, 0, sizeof (sat.sat_addr));
+
+/*
+       force port 3 as the semi-official ATP access port        MJ 2002
+*/
+    if (( atp = atp_open( (u_int8_t)3, &sat.sat_addr )) == NULL ) {
+       LOG(log_error, logtype_default, "main: atp_open: %s", strerror( errno ) );
+       exit( 1 );
+    }
+
+    regerr = nbp_rgstr( atp_sockaddr( atp ), server, "Apple //gs", "*" );
+    regerr += nbp_rgstr( atp_sockaddr( atp ), server, "Apple //e Boot", "*" );
+    regerr += nbp_rgstr( atp_sockaddr( atp ), server, "ProDOS16 Image", "*" );
+    if ( regerr < 0 ) {
+       LOG(log_error, logtype_default, "Can't register Apple II boot files %s", server );
+       exit( 1 );
+    }
+
+    LOG(log_info, logtype_default, "%s:Apple 2 Boot started", server );
+
+       signal(SIGHUP, goaway);
+       signal(SIGTERM, goaway);
+
+    for (;;) {
+       /*
+        * Something seriously wrong with atp, since these assigns must
+        * be in the loop...
+        */
+       atpb.atp_saddr = &sat;
+       atpb.atp_rreqdata = buf;
+       bzero( &sat, sizeof( struct sockaddr_at ));
+       atpb.atp_rreqdlen = sizeof( buf );
+
+       if ( atp_rreq( atp, &atpb ) < 0 ) {
+       LOG(log_error, logtype_default, "main: atp_rreq: %s", strerror( errno ) );
+           exit( 1 );
+       }
+
+       p = buf;
+       bcopy( p, &req, sizeof( long ));
+       req = ntohl( req );
+       p += sizeof( long );
+
+/*
+    LOG(log_info, logtype_default, "req = %08lx",(long)req );
+*/
+
+       reqblklo = (int)(( req & 0x00FF0000 ) >> 7);  /* ie block 1 >> to 0x0200, blk 3 >> 0x0600  */
+       reqblkhi = (int)(( req & 0x0000FF00 ) << 9);  /* simmilar fake multiply is needed here */
+       req &= 0xFF000000;
+
+/*
+    LOG(log_info, logtype_default, "       reqblklo = %02x",(int)reqblklo );
+    LOG(log_info, logtype_default, "       reqblkhi = %02x",(int)reqblkhi );
+    LOG(log_info, logtype_default, "       req now = %08lx",(long)req );
+*/
+
+       switch( req ) {
+       case 0x01000000 :       /* Apple IIgs both ROM 1 and ROM 3 */
+/*    LOG(log_info, logtype_default, "          Req ProDOS16 Boot Blocks" ); */
+               resp = a2bootreq(_PATH_A_GS_BLOCKS);
+           break;
+
+       case 0x02000000 :       /* Apple 2 Workstation card  */
+/*    LOG(log_info, logtype_default, "          Req Apple //e Boot" );  */
+               resp = a2bootreq(_PATH_A_2E_BLOCKS);
+           break;
+
+       case 0x03000000 :       /* Apple IIgs both ROM 1 and ROM 3 */
+/*    LOG(log_info, logtype_default, "          Req ProDOS16 Image" );    */
+               resp = a2bootreq(_PATH_P16_IMAGE);
+           break;
+
+       default :
+           LOG(log_error, logtype_default, bad );
+
+           resp = TL_EOF;
+           *( buf + sizeof( long ) ) = (unsigned char)strlen( bad );
+           strcpy( buf + 1 + sizeof( long ), bad );
+
+           break;
+       }
+
+       bcopy( &resp, buf, sizeof( long ));
+
+       iov.iov_len = sizeof( long ) + 0X200;
+       iov.iov_base = buf;
+       atpb.atp_sresiov = &iov;
+       atpb.atp_sresiovcnt = 1;
+
+       if ( atp_sresp( atp, &atpb ) < 0 ) {
+           LOG(log_error, logtype_default, "main: atp_sresp: %s", strerror( errno ) );
+           exit( 1 );
+       }
+    }
+}
+
+
+/* below MJ 2002 (initially borrowed from aep_packet */
+long a2bootreq(fname)
+       char    *fname;
+{
+       int f,m;
+       long readlen;
+       long reqpos;
+/*
+    LOG(log_info, logtype_default, "          a2bootreq( %s )",fname );
+*/
+       f=open(fname,O_RDONLY );
+       if(f==EOF) {
+       LOG(log_error, logtype_default, "a2boot open error on %s",fname);
+               return close(f);
+       }
+
+       reqpos = reqblklo + reqblkhi;
+/*
+    LOG(log_info, logtype_default, "would lseek to %08lx",reqpos);
+*/
+       lseek(f,reqpos,0);
+       readlen=read(f, buf + sizeof( long ), 0x200 );
+
+/*
+    LOG(log_info, logtype_default, "length is %08lx", readlen);
+*/
+
+       if(readlen < 0x200) {
+/*    LOG(log_info, logtype_default, "Read to EOF");  */
+               close(f);
+               return TL_EOF;
+       }
+       close(f);
+       return  TL_OK;
+}
+
index 1713f790cfd8982ed861dc6b96c2259048bbdf9d..4a7b79bba55814a78f8803095534e5e9f0a89b70 100644 (file)
@@ -84,6 +84,20 @@ atalk_startup() {
            echo
        fi
 
+       # check for a2boot in bin directory
+       if [ x"${A2BOOT_RUN}" = x"yes"  -a -x ${ATALK_BIN}/a2boot ]; then
+           echo -n "  Starting a2boot"
+           daemon ${ATALK_BIN}/a2boot
+           echo
+       fi
+
+       # check for a2boot in sbin directory
+       if [ x"${A2BOOT_RUN}" = x"yes"  -a -x ${ATALK_SBIN}/a2boot ]; then
+           echo -n "  Starting a2boot"
+           daemon ${ATALK_SBIN}/a2boot
+           echo
+       fi
+
     fi
 
     if [ x"${AFPD_RUN}" = x"yes" -a -x ${ATALK_SBIN}/afpd ] ; then
@@ -136,6 +150,20 @@ case "$1" in
                echo
            fi
 
+            # checking for a2boot in bin directory
+           if [ x"${A2BOOT_RUN}" = x"yes" -a -x ${ATALK_BIN}/a2boot ]; then
+               echo -n "  Stopping a2boot:"
+               killproc a2boot
+               echo
+           fi
+
+            # checking for a2boot in sbin directory
+           if [ x"${A2BOOT_RUN}" = x"yes" -a -x ${ATALK_SBIN}/a2boot ]; then
+               echo -n "  Stopping a2boot:"
+               killproc a2boot
+               echo
+           fi
+
            action "  Unregistering ${ATALK_NAME}:Workstation${ATALK_ZONE}:" ${ATALK_BIN}/nbpunrgstr \"${ATALK_NAME}:Workstation${ATALK_ZONE}\"
            action "  Unregistering ${ATALK_NAME}:netatalk${ATALK_ZONE}:" ${ATALK_BIN}/nbpunrgstr \"${ATALK_NAME}:netatalk${ATALK_ZONE}\"
 
index ec8d215539d409207810e7fa9eba10d8332bfb75..5ef90f33aa4076182ecce79724b990986f9be9e2 100755 (executable)
@@ -1,22 +1,53 @@
 #!/bin/sh
 #
 # buildrpm
-# $Id: buildrpm,v 1.2 2001-02-20 16:57:32 rufustfirefly Exp $
+# $Id: buildrpm,v 1.3 2003-01-11 17:26:06 jmarcus Exp $
 #
 # automates the process of building the netatalk rpm
+#
+# To properly bootstrap the RPM from a raw CVS pull,
+# place the CVS sandbox under, e.g. /usr/src/redhat/BUILD
+# and name this new directory 'netatalk-$version' (where
+# $version is the contents of the 'VERSION' file under the source
+# root).  Then, cd into the source root and run 'autogen.sh'
+# (with no arguments).  Finally, copy this file to the BUILD
+# directory and run it from there, passing the full name of the
+# source directory as the sole argument.
+#
+if [ "x$1" = "x" ]; then
+    echo "To avoid problems with builds on remote filesystems"
+    echo "please copy this file to your redhat/BUILD directory"
+    echo "and execute as 'buildrpm netatalk-xxy', using the actual"
+    echo "full name (i.e. with version) of the source tree."
+    exit 1
+fi
+
+CVSNAME=$1
+
+REDHAT_DIR=../
 
-REDHAT_DIR=/usr/src/redhat
-CVSNAME=netatalk
+VERSION=`cat $CVSNAME/VERSION`
 
-# clean out any object files
-cd ../../
-make clean
+sed -e "s/__VERSION__/$VERSION/" \
+    $CVSNAME/distrib/rpm/netatalk-redhat.spec \
+    > ${REDHAT_DIR}/SPECS/netatalk.spec
+
+cp -f $CVSNAME/distrib/rpm/netatalk-rpmbuild.patch \
+    ${REDHAT_DIR}/SOURCES
+
+# Newer distros use rpmbuild
+if `rpmbuild --version > /dev/null`; then
+    RPM="rpmbuild"
+else
+    RPM="rpm"
+fi
+
+# clean out objects and Makefiles
+(cd $CVSNAME && make distclean)
 
 # tar up the archive
-cd ../
-tar -c -v -f -z ${REDHAT_DIR}/SOURCES/netatalk.tar.gz \
+tar -c -v -z -f ${REDHAT_DIR}/SOURCES/$CVSNAME.tar.gz \
        --exclude="*/CVS" --exclude="*~" $CVSNAME
 
-# build the rpm
-rpm -ba ${REDHAT_DIR}/SPECS/netatalk.spec
-
+# build the SRPM and binary and devel RPMs.
+${RPM} -ba ${REDHAT_DIR}/SPECS/netatalk.spec
index 44181f3a947932f843514a4d0537dbee36facca8..b2c8a3e7a2743d18834c4b5238041cfcc450a2b3 100644 (file)
@@ -1,6 +1,6 @@
 #################################################### VERSIONING INFORMATION
 %define name    netatalk
-%define version 1.5pre6
+%define version __VERSION__
 %define release 1
 
 ################################################# BASIC PACKAGE INFORMATION
@@ -11,6 +11,7 @@ Release: %{release}
 Copyright: BSD
 Group: Networking/Daemons
 Source0: %{name}-%{version}.tar.gz
+Patch0: netatalk-rpmbuild.patch
 URL: http://netatalk.sourceforge.net/
 Packager: rufus t firefly <rufus.t.firefly@linux-mandrake.com>
 Obsoletes: netatalk-1.4b2+asun netatalk-1.4.99
@@ -19,6 +20,8 @@ Obsoletes: netatalk-1.4b2+asun netatalk-1.4.99
 Requires: cracklib, openssl, tcp_wrappers, pam
 BuildRequires: openssl-devel
 
+# Note: RedHat 7.3 build requires autoconf >= 2.53, automake >= 1.5, ac-archive >= 0.5
+
 Prefix:    %{_prefix}
 BuildRoot: /var/tmp/%{name}-buildroot
 
@@ -43,6 +46,10 @@ This package is required for developing appletalk-based applications.
 
 %changelog
 
+* Sat Jan 04 2002 Steven N. Hirsch <shirsch@adelphia.net>
+  - Fix RedHat RPM build.
+  - Build Apple2 boot support.
+
 * Thu Apr 12 2001 rufus t firefly <rufus.t.firefly@linux-mandrake.com>
   - v1.5pre6-1
   - pre-release 6 for sourceforge
@@ -75,11 +82,14 @@ This package is required for developing appletalk-based applications.
 
 %prep
 %setup -q -n %{name}-%{version}/
+%patch0 -p1 -b .rpmbuild
 
 %build
 CFLAGS="$RPM_OPT_FLAGS -fomit-frame-pointer -fsigned-char" ./configure \
        --prefix=%{prefix} \
+       --libexec=%{prefix}/libexec/netatalk \
        --with-config-dir=/etc/atalk \
+       --with-pkgconfdir=/etc/atalk \
        --with-uams-path=/etc/atalk/uams \
        --with-message-dir=/etc/atalk/msg \
        --enable-lastdid \
@@ -89,7 +99,8 @@ CFLAGS="$RPM_OPT_FLAGS -fomit-frame-pointer -fsigned-char" ./configure \
        --with-shadow \
        --with-tcp-wrappers \
        --with-ssl \
-       --enable-pgp-uam
+       --enable-pgp-uam \
+       --enable-a2boot
 make all
 
 %install
@@ -97,11 +108,6 @@ make all
 mkdir -p $RPM_BUILD_ROOT{%{prefix},/etc/atalk/{uams,msg}}
 make DESTDIR=$RPM_BUILD_ROOT install-strip
 
-# bzip2 man pages
-#for i in 1 3 4 5 8; do
-#      bzip2 -v $RPM_BUILD_ROOT/usr/man/man$i/*.$i
-#done
-
 %post
 ### RUN CHKCONFIG ###
 /sbin/chkconfig --add atalk
@@ -175,7 +181,8 @@ rm -rf $RPM_BUILD_DIR/%{name}/
 %dir /etc/atalk/uams
 %{prefix}/bin/*
 %{prefix}/sbin/*
-%{prefix}/man/man*/*
+%{prefix}/libexec/*
+%{prefix}/man/man*/*.gz
 
 %files devel
 %defattr(-,root,root)
diff --git a/distrib/rpm/netatalk-rpmbuild.patch b/distrib/rpm/netatalk-rpmbuild.patch
new file mode 100644 (file)
index 0000000..f965b2f
--- /dev/null
@@ -0,0 +1,17 @@
+--- netatalk-1.7cvs/bin/afile/Makefile.in.orig 2003-01-07 20:44:23.000000000 -0500
++++ netatalk-1.7cvs/bin/afile/Makefile.in      2003-01-08 07:09:05.000000000 -0500
+@@ -117,12 +117,12 @@
+ install_sh = @install_sh@
+ bin_PROGRAMS = afile achfile
+-bin_SCRIPTS = acleandir.rc
++bin_SCRIPTS = # acleandir.rc
+ afile_SOURCES = afile.c common.c common.h
+ achfile_SOURCES = achfile.c common.c common.h
+-EXTRA_DIST = acleandir.rc
++EXTRA_DIST = # acleandir.rc
+ subdir = bin/afile
+ mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+ CONFIG_HEADER = $(top_builddir)/config.h
index f4172ee25494dfd3d7b3e5fb7a14bf00efe31576..32073ad87fcd1cfd0f39bcf13aba5a666e00eb43 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * $Id: file.c,v 1.70 2003-01-08 15:01:34 didg Exp $
+ * $Id: file.c,v 1.71 2003-01-11 17:26:06 jmarcus Exp $
  *
  * Copyright (c) 1990,1993 Regents of The University of Michigan.
  * All Rights Reserved.  See COPYRIGHT.
@@ -357,7 +357,7 @@ int getmetadata(struct vol *vol,
                us what the PD file code should be.  Everything gets a
                subtype of 0x0000 unless the original value was hashed
                to "pXYZ" when we created it.  See IA, Ver 2.
-               <shirsch@ibm.net> */
+               <shirsch@adelphia.net> */
         case FILPBIT_PDINFO :
             if (afp_version >= 30) { /* UTF8 name */
                 utf8 = kTextEncodingUTF8;
@@ -800,43 +800,24 @@ int setfilparams(struct vol *vol,
             break;
 
             /* Client needs to set the ProDOS file info for this file.
-               Use defined strings for the simple cases, and convert
-               all else into pXYY per Inside Appletalk.  Always set
-               the creator as "pdos". <shirsch@ibm.net> */
+               Use a defined string for TEXT to support crlf
+               translations and convert all else into pXYY per Inside
+               Appletalk.  Always set the creator as "pdos".  Changes
+               from original by Marsha Jackson. */
         case FILPBIT_PDINFO :
             achar = *buf;
             buf += 2;
-            memcpy(&ashort, buf, sizeof( ashort ));
-            ashort = ntohs( ashort );
-            buf += 2;
-
-            switch ( (unsigned int) achar )
-            {
-            case 0x04 :
-                fdType = ( u_char *) "TEXT";
-                break;
-
-            case 0xff :
-                fdType = ( u_char *) "PSYS";
-                break;
-
-            case 0xb3 :
-                fdType = ( u_char *) "PS16";
-                break;
-
-            case 0x00 :
-                fdType = ( u_char *) "BINA";
-                break;
-
-            default :
-                xyy[0] = ( u_char ) 'p';
-                xyy[1] = achar;
-                xyy[2] = ( u_char ) ( ashort >> 8 ) & 0xff;
-                xyy[3] = ( u_char ) ashort & 0xff;
-                fdType = xyy;
-                break;
-            }
-
+            /* Keep special case to support crlf translations */
+            if ((unsigned int) achar == 0x04) {
+               fdType = (u_char *)"TEXT";
+               buf += 2;
+            } else {
+               xyy[0] = ( u_char ) 'p';
+               xyy[1] = achar;
+               xyy[3] = *buf++;
+               xyy[2] = *buf++;
+               fdType = xyy;
+           }
             memcpy(ad_entry( adp, ADEID_FINDERI ), fdType, 4 );
             memcpy(ad_entry( adp, ADEID_FINDERI ) + 4, "pdos", 4 );
             break;
index 1c6b7a2c74eac1ab1b2e02cca0ac43941a6cb763..12ec3656dd33dffbd8688d27181a1e7e5cf66992 100644 (file)
@@ -27,10 +27,10 @@ psf_LINKS = ofpap ifpap tfpap ifpaprev tfpaprev ofwpap ifwpap \
 # install sections for links
 #
 
-install-exec-local:
+install-exec-hook:
        @list='$(psf_LINKS)'; for l in $$list; do \
                rm $(DESTDIR)$(libexecdir)/$$l 2>/dev/null || true; \
-               $(LN_S) psf $(DESTDIR)$(libexecdir)/$$l;  \
+               (cd $(DESTDIR)$(libexecdir) && $(LN_S) psf $$l);  \
        done
 
 #