+/*
+ * $Id: nad.c,v 1.8.2.1 2002-03-12 13:39:55 srittau Exp $
+ */
+
#ifdef HAVE_CONFIG_H
#include "config.h"
-#endif
+#endif /* HAVE_CONFIG_H */
#include <sys/types.h>
#include <sys/param.h>
#include <errno.h>
#include <stdio.h>
#include <string.h>
-#include <syslog.h>
#include <dirent.h>
+#ifdef HAVE_FCNTL_H
#include <fcntl.h>
+#endif /* HAVE_FCNTL_H */
#include <atalk/adouble.h>
#include <netatalk/endian.h>
#include "megatron.h"
+#include "nad.h"
static char hexdig[] = "0123456789abcdef";
-/* Forward Declarations */
-int nad_open(char *path, int openflags, struct FHeader *fh, int options);
-int nad_header_read(struct FHeader *fh);
-int nad_header_write(struct FHeader *fh);
-int nad_read(int fork, char *forkbuf, int bufc);
-int nad_write(int fork, char *forkbuf, int bufc);
-int nad_close(int status);
-
char *mtoupath( mpath )
char *mpath;
{
while ( *m != '\0' ) {
#if AD_VERSION == AD_VERSION1
if ( !isascii( *m ) || *m == '/' || ( i == 0 && *m == '.' )) {
-#else
+#else /* AD_VERSION == AD_VERSION1 */
if (!isprint(*m) || *m == '/' || ( i == 0 && (*m == '.' ))) {
-#endif
+#endif /* AD_VERSION == AD_VERSION1 */
*u++ = ':';
*u++ = hexdig[ ( *m & 0xf0 ) >> 4 ];
*u++ = hexdig[ *m & 0x0f ];
} else {
#ifdef DOWNCASE
*u++ = ( isupper( *m )) ? tolower( *m ) : *m;
-#else DOWNCASE
+#else /* DOWNCASE */
*u++ = *m;
-#endif DOWNCASE
+#endif /* DOWNCASE */
}
i++;
m++;
} else {
#ifdef DOWNCASE
*m = diatolower(*u);
-#else DOWNCASE
+#else /* DOWNCASE */
*m = *u;
-#endif DOWNCASE
+#endif /* DOWNCASE */
}
u++;
m++;
#if HEXOUTPUT
int hexfork[ NUMFORKS ];
-#endif
+#endif /* HEXOUTPUT */
struct nad_file_data {
char macname[ MAXPATHLEN + 1 ];
#if DEBUG
fprintf(stderr, "%s is adpath[0]\n", nad.adpath[0]);
fprintf(stderr, "%s is adpath[1]\n", nad.adpath[1]);
-#endif
+#endif /* DEBUG */
if ( ad_open( nad.adpath[ 0 ], ADFLAGS_DF|ADFLAGS_HF,
openflags, (int)( st.st_mode & 0666 ), &nad.ad) < 0 ) {
perror( nad.adpath[ 0 ] );
fprintf(stderr, "%s\n", nad.macname);
fprintf(stderr, "%s is adpath[0]\n", nad.adpath[0]);
fprintf(stderr, "%s is adpath[1]\n", nad.adpath[1]);
-#endif
+#endif /* DEBUG */
if ( stat( ".", &st ) < 0 ) {
perror( "stat of . failed" );
return( -1 );
fprintf( stderr, "size of resource fork\t\t%d\n",
ntohl( fh->forklen[ RESOURCE ] ));
fprintf( stderr, "get info comment\t\t\"%s\"\n", fh->comment );
-#endif
+#endif /* DEBUG */
ad_getdate(&nad.ad, AD_DATE_CREATE, &temptime);
memcpy( &fh->create_date, &temptime, sizeof( temptime ));
temptime = AD_DATE_TO_UNIX(temptime);
fprintf( stderr, "backup_date seconds\t\t%lu\n", temptime );
fprintf( stderr, "size of finder_info\t\t%d\n", sizeof( fh->finder_info ));
-#endif
+#endif /* DEBUG */
memcpy(&fh->finder_info.fdType,
ad_entry( &nad.ad, ADEID_FINDERI ) + FINDERIOFF_TYPE,
fprintf(stderr, "fh script\t\t\t%x\n", fh->finder_xinfo.fdScript);
fprintf(stderr, "fh xflags\t\t\t%x\n", fh->finder_xinfo.fdXFlags);
}
-#endif
+#endif /* DEBUG */
nad.offset[ DATA ] = nad.offset[ RESOURCE ] = 0;
ad_entry( &nad.ad, ADEID_NAME ));
fprintf( stderr, "ADEID_COMMENT\t\t\t%d\n",
ad_getentrylen( &nad.ad, ADEID_COMMENT ));
-#endif
+#endif /* DEBUG */
memcpy( &temptime, &fh->create_date, sizeof( temptime ));
ad_setdate(&nad.ad, AD_DATE_CREATE, temptime);
ad_getdate(&nad.ad, AD_DATE_MODIFY, &temptime);
temptime = AD_DATE_TO_UNIX(temptime);
fprintf(stderr, "FILEIOFF_MODIFY seconds\t\t%ld\n", temptime );
-#endif
+#endif /* DEBUG */
memset( ad_entry( &nad.ad, ADEID_FINDERI ), 0, ADEDLEN_FINDERI );
memcpy( ad_entry( &nad.ad, ADEID_FINDERI ) + FINDERIOFF_TYPE,
sizeof( fh->finder_info.fdCreator ),
ad_entry( &nad.ad, ADEID_FINDERI ));
}
-#endif
+#endif /* DEBUG */
#if HEXOUTPUT
hexfork[ DATA ] = open( "datafork", O_WRONLY|O_CREAT, 0622 );
hexfork[ RESOURCE ] = open( "resfork", O_WRONLY|O_CREAT, 0622 );
-#endif
+#endif /* HEXOUTPUT */
nad.offset[ DATA ] = nad.offset[ RESOURCE ] = 0;
ad_flush( &nad.ad, ADFLAGS_DF|ADFLAGS_HF );
#if DEBUG
fprintf( stderr, "Entering nad_read\n" );
-#endif
+#endif /* DEBUG */
if (( cc = ad_read( &nad.ad, forkeid[ fork ], nad.offset[ fork ],
forkbuf, bufc)) < 0 ) {
#if DEBUG
fprintf( stderr, "Exiting nad_read\n" );
-#endif
+#endif /* DEBUG */
return( cc );
}
#if DEBUG
fprintf( stderr, "Entering nad_write\n" );
-#endif
+#endif /* DEBUG */
#if HEXOUTPUT
write( hexfork[ fork ], forkbuf, bufc );
-#endif
+#endif /* HEXOUTPUT */
writelen = bufc;
buf_ptr = forkbuf;