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...
PAPD_RUN=yes
AFPD_RUN=yes
TIMELORD_RUN=no
+A2BOOT_RUN=no
# Control whether the daemons are started in the background
ATALK_BGROUND=no
-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)
)
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",
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)
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
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
--- /dev/null
+Makefile
+Makefile.in
+a2boot
+.deps
+.libs
--- /dev/null
+/*
+ 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.
+ */
--- /dev/null
+# 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\"
--- /dev/null
+/*
+ * $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;
+}
+
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
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}\"
#!/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
#################################################### VERSIONING INFORMATION
%define name netatalk
-%define version 1.5pre6
+%define version __VERSION__
%define release 1
################################################# BASIC PACKAGE INFORMATION
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
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
%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
%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 \
--with-shadow \
--with-tcp-wrappers \
--with-ssl \
- --enable-pgp-uam
+ --enable-pgp-uam \
+ --enable-a2boot
make all
%install
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
%dir /etc/atalk/uams
%{prefix}/bin/*
%{prefix}/sbin/*
-%{prefix}/man/man*/*
+%{prefix}/libexec/*
+%{prefix}/man/man*/*.gz
%files devel
%defattr(-,root,root)
--- /dev/null
+--- 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
/*
- * $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.
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;
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;
# 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
#