+/*
+ * $Id: megatron.c,v 1.14 2010-01-27 21:27:53 didg Exp $
+ */
+
#ifdef HAVE_CONFIG_H
#include "config.h"
-#endif
+#endif /* HAVE_CONFIG_H */
#include <sys/types.h>
#include <sys/param.h>
#include <ctype.h>
#include <stdio.h>
#include <string.h>
-#include <syslog.h>
#include <netatalk/endian.h>
+#include "asingle.h"
#include "megatron.h"
+#include "hqx.h"
+#include "macbin.h"
+#include "nad.h"
-char forkbuf[8192];
char *forkname[] = { "data", "resource" };
-char *name[] = { "unhex",
+static char forkbuf[8192];
+static char *name[] = { "unhex",
"unbin",
"unsingle",
"macbinary",
"binheader",
"megatron" };
-int from_open( un, file, fh, flags )
- int un, flags;
- char *file;
- struct FHeader *fh;
+static int from_open(int un, char *file, struct FHeader *fh, int flags)
{
switch ( un ) {
case MEGATRON :
}
}
-int from_read( un, fork, buf, len )
- int un;
- int fork;
- char *buf;
- int len;
+static ssize_t from_read(int un, int fork, char *buf, size_t len)
{
switch ( un ) {
case MEGATRON :
}
}
-int from_close( un )
- int un;
+static int from_close(int un)
{
switch ( un ) {
case MEGATRON :
}
}
-int to_open( to, file, fh, flags )
- int to, flags;
- char *file;
- struct FHeader *fh;
+static int to_open(int to, char *file, struct FHeader *fh, int flags)
{
switch ( to ) {
case MEGATRON :
}
}
-int to_write( to, fork, bufc )
- int to;
- int fork;
- int bufc;
+static ssize_t to_write(int to, int fork, size_t bufc)
{
switch ( to ) {
case MEGATRON :
}
}
-int to_close( to, keepflag )
- int to;
- int keepflag;
+static int to_close(int to, int keepflag)
{
switch ( to ) {
case MEGATRON :
}
}
-int megatron( path, module, newname, flags )
- char *path, *newname;
- int module, flags;
+static int megatron( char *path, int module, char *newname, int flags)
{
struct stat st;
struct FHeader fh;
- int bufc;
+ ssize_t bufc;
int fork;
- int forkred;
+ size_t forkred;
/*
* If the source file is not stdin, make sure it exists and
*/
memset( &fh, 0, sizeof( fh ));
- if ( from_open( module, path, &fh ) < 0 ) {
+ if ( from_open( module, path, &fh, flags ) < 0 ) {
return( -1 );
}
fprintf( stderr, "megatron: forkred is \t\t%d\n", forkred );
fprintf( stderr, "megatron: fh.forklen[%d] is \t%d\n", fork,
ntohl( fh.forklen[ fork ] ));
-#endif
+#endif /* DEBUG */
if (( bufc < 0 ) || ( forkred != ntohl( fh.forklen[ fork ] ))) {
fprintf( stderr, "%s: Problem with input, dude\n", path );
to_close( module, TRASH );
return( from_close( module ));
}
-int main( argc, argv )
- int argc;
- char **argv;
+int main(int argc, char **argv)
{
int rc, c;
int rv = 0;
char *progname, newname[ADEDLEN_NAME + 1];
progname = strrchr( argv[ 0 ], '/' );
- if (( progname == NULL ) || ( progname == '\0' )) {
+ if (( progname == NULL ) || ( *progname == '\0' )) {
progname = argv[ 0 ];
} else progname++;
fprintf( stderr, "megatron: list of program links messed up\n" );
return( -1 );
}
-#endif
+#endif /* DEBUG */
for ( c = 0 ; (( c < converts ) && ( module < 0 )) ; ++c ) {
if ( strcmp( name[ c ], progname ) == 0 ) module = c;
flags |= OPTION_STDOUT;
continue;
}
-
+ if (strcmp(argv[c], "--euc") == 0) {
+ flags |= OPTION_EUCJP;
+ continue;
+ }
+ if (strcmp(argv[c], "--sjis") == 0) {
+ flags |= OPTION_SJIS;
+ continue;
+ }
rc = megatron( argv[ c ], module, newname, flags);
if ( rc != 0 ) {
rv = rc;