mirror of
git://git.gnupg.org/gnupg.git
synced 2025-01-03 12:11:33 +01:00
filetype support for RISC OS
This commit is contained in:
parent
f33df26a20
commit
557f65836d
@ -1,3 +1,11 @@
|
|||||||
|
2002-10-28 Stefan Bellon <sbellon@sbellon.de>
|
||||||
|
|
||||||
|
* build-packet.c (calc_plaintext, do_plaintext): Added filetype
|
||||||
|
handling for RISC OS' file types.
|
||||||
|
|
||||||
|
* plaintext.c (handle_plaintext) [__riscos__]: Added filetype
|
||||||
|
handling for RISC OS' file types.
|
||||||
|
|
||||||
2002-10-23 David Shaw <dshaw@jabberwocky.com>
|
2002-10-23 David Shaw <dshaw@jabberwocky.com>
|
||||||
|
|
||||||
* main.h, import.c (sec_to_pub_keyblock, import_secret_one,
|
* main.h, import.c (sec_to_pub_keyblock, import_secret_one,
|
||||||
|
@ -528,7 +528,14 @@ do_pubkey_enc( IOBUF out, int ctb, PKT_pubkey_enc *enc )
|
|||||||
static u32
|
static u32
|
||||||
calc_plaintext( PKT_plaintext *pt )
|
calc_plaintext( PKT_plaintext *pt )
|
||||||
{
|
{
|
||||||
|
#ifndef __riscos__
|
||||||
return pt->len? (1 + 1 + pt->namelen + 4 + pt->len) : 0;
|
return pt->len? (1 + 1 + pt->namelen + 4 + pt->len) : 0;
|
||||||
|
#else
|
||||||
|
/* Under RISC OS, we add ",xxx" to the file name in order to
|
||||||
|
be able to recreate the correct file type on the recipients'
|
||||||
|
side. Therefore we need 4 bytes more. */
|
||||||
|
return pt->len? (1 + 1 + pt->namelen + 4 + pt->len + 4) : 0;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
@ -541,9 +548,26 @@ do_plaintext( IOBUF out, int ctb, PKT_plaintext *pt )
|
|||||||
|
|
||||||
write_header(out, ctb, calc_plaintext( pt ) );
|
write_header(out, ctb, calc_plaintext( pt ) );
|
||||||
iobuf_put(out, pt->mode );
|
iobuf_put(out, pt->mode );
|
||||||
|
#ifndef __riscos__
|
||||||
iobuf_put(out, pt->namelen );
|
iobuf_put(out, pt->namelen );
|
||||||
for(i=0; i < pt->namelen; i++ )
|
for(i=0; i < pt->namelen; i++ )
|
||||||
iobuf_put(out, pt->name[i] );
|
iobuf_put(out, pt->name[i] );
|
||||||
|
#else
|
||||||
|
/* Under RISC OS, we add ",xxx" to the file name in order to
|
||||||
|
be able to recreate the correct file type on the recipients'
|
||||||
|
side. Therefore we need 4 bytes more. */
|
||||||
|
iobuf_put(out, pt->namelen + 4);
|
||||||
|
for(i=0; i < pt->namelen; i++ )
|
||||||
|
if( pt->name[i] != '/' )
|
||||||
|
iobuf_put(out, pt->name[i] );
|
||||||
|
else
|
||||||
|
iobuf_put(out, '.' );
|
||||||
|
i = riscos_get_filetype( iobuf_get_real_fname( pt->buf ) );
|
||||||
|
iobuf_put(out, ',');
|
||||||
|
iobuf_put(out, "0123456789abcdef"[(i >> 8) & 0xf]);
|
||||||
|
iobuf_put(out, "0123456789abcdef"[(i >> 4) & 0xf]);
|
||||||
|
iobuf_put(out, "0123456789abcdef"[(i >> 0) & 0xf]);
|
||||||
|
#endif
|
||||||
if( write_32(out, pt->timestamp ) )
|
if( write_32(out, pt->timestamp ) )
|
||||||
rc = G10ERR_WRITE_FILE;
|
rc = G10ERR_WRITE_FILE;
|
||||||
|
|
||||||
|
@ -1110,7 +1110,7 @@ do_proc_packets( CTX c, IOBUF a )
|
|||||||
any_data = 1;
|
any_data = 1;
|
||||||
if( rc ) {
|
if( rc ) {
|
||||||
free_packet(pkt);
|
free_packet(pkt);
|
||||||
/* stop processing hwne an invalid packet has been encountered
|
/* stop processing when an invalid packet has been encountered
|
||||||
* but don't do so when we are doing a --list-packet. */
|
* but don't do so when we are doing a --list-packet. */
|
||||||
if( rc == G10ERR_INVALID_PACKET && opt.list_packets != 2 )
|
if( rc == G10ERR_INVALID_PACKET && opt.list_packets != 2 )
|
||||||
break;
|
break;
|
||||||
|
@ -25,7 +25,7 @@
|
|||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#ifdef HAVE_DOSISH_SYSTEM
|
#ifdef HAVE_DOSISH_SYSTEM
|
||||||
#include <fcntl.h> /* for setmode() */
|
# include <fcntl.h> /* for setmode() */
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "util.h"
|
#include "util.h"
|
||||||
@ -55,6 +55,9 @@ handle_plaintext( PKT_plaintext *pt, md_filter_context_t *mfx,
|
|||||||
int rc = 0;
|
int rc = 0;
|
||||||
int c;
|
int c;
|
||||||
int convert = pt->mode == 't';
|
int convert = pt->mode == 't';
|
||||||
|
#ifdef __riscos__
|
||||||
|
int filetype = 0xfff;
|
||||||
|
#endif
|
||||||
|
|
||||||
/* create the filename as C string */
|
/* create the filename as C string */
|
||||||
if( nooutput )
|
if( nooutput )
|
||||||
@ -75,9 +78,29 @@ handle_plaintext( PKT_plaintext *pt, md_filter_context_t *mfx,
|
|||||||
rc = G10ERR_CREATE_FILE;
|
rc = G10ERR_CREATE_FILE;
|
||||||
goto leave;
|
goto leave;
|
||||||
}
|
}
|
||||||
|
#ifdef __riscos__
|
||||||
|
/* If there's a ,xxx extension in the embedded filename,
|
||||||
|
get filetype from it and use it later on */
|
||||||
|
filetype = riscos_get_filetype_from_string( pt->name, pt->namelen );
|
||||||
|
c = riscos_get_filetype_from_string( fname, strlen(fname) );
|
||||||
|
if( c != 0xfff && filetype == 0xfff)
|
||||||
|
filetype = c;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
fname = make_printable_string( pt->name, pt->namelen, 0 );
|
fname = make_printable_string( pt->name, pt->namelen, 0 );
|
||||||
|
#ifdef __riscos__
|
||||||
|
/* If there's a ,xxx extension in the embedded filename,
|
||||||
|
get filetype from it and use it later on, remove ,xxx from
|
||||||
|
actual filename */
|
||||||
|
if( fname[strlen(fname) - 4] == ',' ) {
|
||||||
|
filetype = riscos_get_filetype_from_string( pt->name, pt->namelen );
|
||||||
|
fname[strlen(fname) - 4] = 0;
|
||||||
|
}
|
||||||
|
for( c=0; fname[c]; ++c)
|
||||||
|
if( fname[c] == '.' )
|
||||||
|
fname[c] = '/';
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
if( nooutput )
|
if( nooutput )
|
||||||
@ -85,9 +108,9 @@ handle_plaintext( PKT_plaintext *pt, md_filter_context_t *mfx,
|
|||||||
else if( !*fname || (*fname=='-' && !fname[1])) {
|
else if( !*fname || (*fname=='-' && !fname[1])) {
|
||||||
/* no filename or "-" given; write to stdout */
|
/* no filename or "-" given; write to stdout */
|
||||||
fp = stdout;
|
fp = stdout;
|
||||||
#ifdef HAVE_DOSISH_SYSTEM
|
#ifdef HAVE_DOSISH_SYSTEM
|
||||||
setmode ( fileno(fp) , O_BINARY );
|
setmode ( fileno(fp) , O_BINARY );
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
while( !overwrite_filep (fname) ) {
|
while( !overwrite_filep (fname) ) {
|
||||||
@ -113,6 +136,9 @@ handle_plaintext( PKT_plaintext *pt, md_filter_context_t *mfx,
|
|||||||
#endif /* __riscos__ */
|
#endif /* __riscos__ */
|
||||||
goto leave;
|
goto leave;
|
||||||
}
|
}
|
||||||
|
#ifdef __riscos__
|
||||||
|
riscos_set_filetype_by_number(fname, filetype);
|
||||||
|
#endif
|
||||||
|
|
||||||
if( !pt->is_partial ) {
|
if( !pt->is_partial ) {
|
||||||
/* we have an actual length (which might be zero). */
|
/* we have an actual length (which might be zero). */
|
||||||
@ -127,10 +153,10 @@ handle_plaintext( PKT_plaintext *pt, md_filter_context_t *mfx,
|
|||||||
}
|
}
|
||||||
if( mfx->md )
|
if( mfx->md )
|
||||||
md_putc(mfx->md, c );
|
md_putc(mfx->md, c );
|
||||||
#ifndef HAVE_DOSISH_SYSTEM
|
#ifndef HAVE_DOSISH_SYSTEM
|
||||||
if( c == '\r' ) /* convert to native line ending */
|
if( c == '\r' ) /* convert to native line ending */
|
||||||
continue; /* fixme: this hack might be too simple */
|
continue; /* fixme: this hack might be too simple */
|
||||||
#endif
|
#endif
|
||||||
if( fp ) {
|
if( fp ) {
|
||||||
if( putc( c, fp ) == EOF ) {
|
if( putc( c, fp ) == EOF ) {
|
||||||
log_error("Error writing to `%s': %s\n",
|
log_error("Error writing to `%s': %s\n",
|
||||||
@ -174,10 +200,10 @@ handle_plaintext( PKT_plaintext *pt, md_filter_context_t *mfx,
|
|||||||
while( (c = iobuf_get(pt->buf)) != -1 ) {
|
while( (c = iobuf_get(pt->buf)) != -1 ) {
|
||||||
if( mfx->md )
|
if( mfx->md )
|
||||||
md_putc(mfx->md, c );
|
md_putc(mfx->md, c );
|
||||||
#ifndef HAVE_DOSISH_SYSTEM
|
#ifndef HAVE_DOSISH_SYSTEM
|
||||||
if( convert && c == '\r' )
|
if( convert && c == '\r' )
|
||||||
continue; /* fixme: this hack might be too simple */
|
continue; /* fixme: this hack might be too simple */
|
||||||
#endif
|
#endif
|
||||||
if( fp ) {
|
if( fp ) {
|
||||||
if( putc( c, fp ) == EOF ) {
|
if( putc( c, fp ) == EOF ) {
|
||||||
log_error("Error writing to `%s': %s\n",
|
log_error("Error writing to `%s': %s\n",
|
||||||
|
@ -1,3 +1,7 @@
|
|||||||
|
2002-10-28 Stefan Bellon <sbellon@sbellon.de>
|
||||||
|
|
||||||
|
* util.h [__riscos__]: Added prototypes for new filetype support.
|
||||||
|
|
||||||
2002-10-19 David Shaw <dshaw@jabberwocky.com>
|
2002-10-19 David Shaw <dshaw@jabberwocky.com>
|
||||||
|
|
||||||
* distfiles, _regex.h: Add _regex.h from glibc 2.3.1.
|
* distfiles, _regex.h: Add _regex.h from glibc 2.3.1.
|
||||||
|
@ -271,6 +271,9 @@ int vasprintf ( char **result, const char *format, va_list args);
|
|||||||
#include <unixlib/features.h>
|
#include <unixlib/features.h>
|
||||||
void riscos_global_defaults(void);
|
void riscos_global_defaults(void);
|
||||||
#define RISCOS_GLOBAL_STATICS(a) const char *__dynamic_da_name = (a);
|
#define RISCOS_GLOBAL_STATICS(a) const char *__dynamic_da_name = (a);
|
||||||
|
int riscos_get_filetype_from_string(const char *string, int len);
|
||||||
|
int riscos_get_filetype(const char *filename);
|
||||||
|
void riscos_set_filetype_by_number(const char *filename, int type);
|
||||||
void riscos_set_filetype(const char *filename, const char *mimetype);
|
void riscos_set_filetype(const char *filename, const char *mimetype);
|
||||||
pid_t riscos_getpid(void);
|
pid_t riscos_getpid(void);
|
||||||
int riscos_kill(pid_t pid, int sig);
|
int riscos_kill(pid_t pid, int sig);
|
||||||
|
@ -1,3 +1,7 @@
|
|||||||
|
2002-10-28 Stefan Bellon <sbellon@sbellon.de>
|
||||||
|
|
||||||
|
* conf-riscos/include/config.h: Updated to reflect latest changes.
|
||||||
|
|
||||||
2002-10-26 David Shaw <dshaw@jabberwocky.com>
|
2002-10-26 David Shaw <dshaw@jabberwocky.com>
|
||||||
|
|
||||||
* gnupg.spec.in: Use new path for keyserver helpers, /usr/lib is
|
* gnupg.spec.in: Use new path for keyserver helpers, /usr/lib is
|
||||||
|
@ -86,6 +86,8 @@
|
|||||||
/* Define if your locale.h file contains LC_MESSAGES. */
|
/* Define if your locale.h file contains LC_MESSAGES. */
|
||||||
#define HAVE_LC_MESSAGES 1
|
#define HAVE_LC_MESSAGES 1
|
||||||
|
|
||||||
|
#define LOCALEDIR ""
|
||||||
|
|
||||||
/* Define to 1 if NLS is requested. */
|
/* Define to 1 if NLS is requested. */
|
||||||
#define ENABLE_NLS 1
|
#define ENABLE_NLS 1
|
||||||
|
|
||||||
@ -154,7 +156,8 @@
|
|||||||
#define SIZEOF_UNSIGNED_LONG 4
|
#define SIZEOF_UNSIGNED_LONG 4
|
||||||
|
|
||||||
/* The number of bytes in a unsigned long long. */
|
/* The number of bytes in a unsigned long long. */
|
||||||
#define SIZEOF_UNSIGNED_LONG_LONG 0
|
/* Is defined later on */
|
||||||
|
/* #define SIZEOF_UNSIGNED_LONG_LONG 0 */
|
||||||
|
|
||||||
/* The number of bytes in a unsigned short. */
|
/* The number of bytes in a unsigned short. */
|
||||||
#define SIZEOF_UNSIGNED_SHORT 2
|
#define SIZEOF_UNSIGNED_SHORT 2
|
||||||
@ -361,29 +364,30 @@
|
|||||||
/* define if compiled symbols have a leading underscore */
|
/* define if compiled symbols have a leading underscore */
|
||||||
#define WITH_SYMBOL_UNDERSCORE 1
|
#define WITH_SYMBOL_UNDERSCORE 1
|
||||||
|
|
||||||
#ifdef IS_DEVELOPMENT_VERSION
|
|
||||||
#define DEBUG 1
|
|
||||||
/* #define M_DEBUG */
|
|
||||||
#define M_GUARD 1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define USE_RNDRISCOS 1
|
|
||||||
|
|
||||||
/* RISC OS specifica */
|
/* RISC OS specifica */
|
||||||
#if (__CC_NORCROFT == 1) /* Norcroft */
|
#if (__CC_NORCROFT == 1) /* Norcroft */
|
||||||
# undef __GNUC__
|
# undef __GNUC__
|
||||||
# define __GNUC_MINOR__ 0
|
# define __GNUC_MINOR__ 0
|
||||||
# define __GLIBC__ 0
|
# define __GLIBC__ 0
|
||||||
# define __attribute__(x)
|
# define __attribute__(x)
|
||||||
|
# define SIZEOF_UNSIGNED_LONG_LONG 0
|
||||||
# if (__CC_NORCROFT_VERSION < 544) /* old version of Norcroft */
|
# if (__CC_NORCROFT_VERSION < 544) /* old version of Norcroft */
|
||||||
# define inline __inline
|
# define inline __inline
|
||||||
# define STR(a) #a
|
# define STR(a) #a
|
||||||
# define __func__ "[" __FILE__ ":" STR(__LINE__) "]"
|
# define __func__ "[" __FILE__ ":" STR(__LINE__) "]"
|
||||||
# endif
|
# endif
|
||||||
#else /* gcc */
|
#else /* gcc */
|
||||||
|
# define SIZEOF_UNSIGNED_LONG_LONG 8
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* #define USE_EXTERNAL_HKP */
|
#define USE_RNDRISCOS 1
|
||||||
|
#define HAVE_LDAP_GET_OPTION 1
|
||||||
|
|
||||||
|
#ifdef IS_DEVELOPMENT_VERSION
|
||||||
|
# define DEBUG 1
|
||||||
|
/*# define M_DEBUG */
|
||||||
|
# define M_GUARD 1
|
||||||
|
#endif
|
||||||
|
|
||||||
#include "g10defs.h"
|
#include "g10defs.h"
|
||||||
|
|
||||||
|
@ -1,3 +1,12 @@
|
|||||||
|
2002-10-28 Stefan Bellon <sbellon@sbellon.de>
|
||||||
|
|
||||||
|
* fileutil.c (make_basename) [__riscos__]: Cut off RISC OS' filing
|
||||||
|
systems from filepath.
|
||||||
|
|
||||||
|
* riscos.c (riscos_get_filetype_from_string, riscos_get_filetype):
|
||||||
|
Added.
|
||||||
|
(riscos_set_filetype_by_number): Made public.
|
||||||
|
|
||||||
2002-10-19 David Shaw <dshaw@jabberwocky.com>
|
2002-10-19 David Shaw <dshaw@jabberwocky.com>
|
||||||
|
|
||||||
* Makefile.am, regcomp.c, regex.c, regex_internal.c,
|
* Makefile.am, regcomp.c, regex.c, regex_internal.c,
|
||||||
|
@ -44,10 +44,12 @@ make_basename(const char *filepath)
|
|||||||
char *p;
|
char *p;
|
||||||
|
|
||||||
if ( !(p=strrchr(filepath, DIRSEP_C)) )
|
if ( !(p=strrchr(filepath, DIRSEP_C)) )
|
||||||
#ifdef HAVE_DRIVE_LETTERS
|
#ifdef HAVE_DRIVE_LETTERS
|
||||||
if ( !(p=strrchr(filepath, '\\')) )
|
if ( !(p=strrchr(filepath, '\\')) )
|
||||||
if ( !(p=strrchr(filepath, ':')) )
|
if ( !(p=strrchr(filepath, ':')) )
|
||||||
#endif
|
#elif defined(__riscos__)
|
||||||
|
if ( !(p=strrchr(filepath, ':')) )
|
||||||
|
#endif
|
||||||
{
|
{
|
||||||
return m_strdup(filepath);
|
return m_strdup(filepath);
|
||||||
}
|
}
|
||||||
|
@ -36,15 +36,9 @@
|
|||||||
|
|
||||||
#define __UNIXLIB_INTERNALS
|
#define __UNIXLIB_INTERNALS
|
||||||
#include <unixlib/unix.h>
|
#include <unixlib/unix.h>
|
||||||
|
#include <unixlib/swiparams.h>
|
||||||
#undef __UNIXLIB_INTERNALS
|
#undef __UNIXLIB_INTERNALS
|
||||||
|
|
||||||
/* RISC OS specific defines that are not yet in UnixLib */
|
|
||||||
|
|
||||||
#define MimeMap_Translate 0x50B00
|
|
||||||
#define MMM_TYPE_RISCOS 0
|
|
||||||
#define MMM_TYPE_RISCOS_STRING 1
|
|
||||||
#define MMM_TYPE_MIME 2
|
|
||||||
#define MMM_TYPE_DOT_EXTN 3
|
|
||||||
|
|
||||||
/* RISC OS file open descriptor control list */
|
/* RISC OS file open descriptor control list */
|
||||||
|
|
||||||
@ -76,14 +70,6 @@ is_read_only(const char *filename)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
|
||||||
riscos_set_filetype_by_number(const char *filename, int type)
|
|
||||||
{
|
|
||||||
if (_swix(OS_File, _INR(0,2), 18, filename, type))
|
|
||||||
log_fatal("Can't set filetype for file %s!\n"
|
|
||||||
"Is the file on a read-only file system?\n", filename);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* exported RISC OS functions */
|
/* exported RISC OS functions */
|
||||||
|
|
||||||
void
|
void
|
||||||
@ -93,6 +79,38 @@ riscos_global_defaults(void)
|
|||||||
__feature_imagefs_is_file = 1;
|
__feature_imagefs_is_file = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
riscos_get_filetype_from_string(const char *string, int len)
|
||||||
|
{
|
||||||
|
int result = 0xfff;
|
||||||
|
|
||||||
|
if (string[len - 4] != ',')
|
||||||
|
return 0xfff;
|
||||||
|
|
||||||
|
sscanf(string+len-3, "%3x", &result);
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
riscos_get_filetype(const char *filename)
|
||||||
|
{
|
||||||
|
int result;
|
||||||
|
|
||||||
|
if (_swix(OS_File, _INR(0,1) | _OUT(6), 23, filename, &result))
|
||||||
|
log_fatal("Can't get filetype for file %s!\n", filename);
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
riscos_set_filetype_by_number(const char *filename, int type)
|
||||||
|
{
|
||||||
|
if (_swix(OS_File, _INR(0,2), 18, filename, type))
|
||||||
|
log_fatal("Can't set filetype for file %s!\n"
|
||||||
|
"Is the file on a read-only file system?\n", filename);
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
riscos_set_filetype(const char *filename, const char *mimetype)
|
riscos_set_filetype(const char *filename, const char *mimetype)
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user