This commit was generated by cvs2svn to compensate for changes in r1538,
which included commits to RCS files with non-trunk default branches. git-svn-id: svn://10.65.10.50/trunk@1539 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
a4626341ed
commit
8e035e517d
118
cb5/u4name.c
118
cb5/u4name.c
@ -1,4 +1,12 @@
|
||||
/* u4name.c (c)Copyright Sequiter Software Inc., 1990-1994. All rights reserved. */
|
||||
/* u4name.c (c)Copyright Sequiter Software Inc., 1990-1994. All rights reserved. */
|
||||
|
||||
/*************************************************************************************/
|
||||
/* Soragna 20 Giugno 1995. Modificate le funzioni che discriminavano tra UNIX e DOS!.*/
|
||||
/* In alcuni casi si eccedeva la dimensione delle stringhe di copia a causa della */
|
||||
/* differenza tra / e \ che riscontrano queste funzioni. Siccome le applicazioni */
|
||||
/* PR.A.S.S.I. non sono sensibili a tali differenze, e' meglio adeguare il qui */
|
||||
/* presente file. Sostanzialmente tutti i controlli su / e \ vengono unificati. */
|
||||
/*************************************************************************************/
|
||||
|
||||
#include "d4all.h"
|
||||
#ifndef S4UNIX
|
||||
@ -28,12 +36,15 @@ void S4FUNCTION u4name_ext( char *name, int len_result, char *new_ext, int do_re
|
||||
{
|
||||
ext_pos = on_pos ;
|
||||
break ;
|
||||
}
|
||||
#ifdef S4UNIX
|
||||
if ( name[on_pos] == '/' ) break ;
|
||||
#else
|
||||
if ( name[on_pos] == '\\' ) break ;
|
||||
#endif
|
||||
}
|
||||
/* Soragna 20 Giugno 1995. Questa discriminazione provoca danni.
|
||||
#ifdef S4UNIX
|
||||
if ( name[on_pos] == '/' ) break ;
|
||||
#else
|
||||
if ( name[on_pos] == '\\' ) break ;
|
||||
#endif
|
||||
*/
|
||||
if ( name[on_pos] == '/' || name[on_pos] == '\\' ) break ;
|
||||
if ( on_pos == 0 ) break ;
|
||||
}
|
||||
|
||||
@ -84,45 +95,66 @@ void S4FUNCTION u4name_make( char *buf, int buf_len, char *default_drive, char *
|
||||
else
|
||||
default_directory_len = 0 ;
|
||||
|
||||
/* Soragn 20 Giugno 1995. May cause improper assigns.
|
||||
#ifdef S4UNIX
|
||||
if ( file_name[0] != '/' && default_directory_len > 0 )
|
||||
#else
|
||||
if ( file_name[0] != '\\' && default_directory_len > 0 )
|
||||
#endif
|
||||
*/
|
||||
if ( (file_name[0] != '/' || file_name[0] != '\\') && default_directory_len > 0 )
|
||||
{
|
||||
if ( pos+2 >= buf_len )
|
||||
return ;
|
||||
/* Soragna 20 Giugno 1995. Anche questo controllo deve essere cambiato
|
||||
#ifdef S4UNIX
|
||||
buf[pos++] = '/' ;
|
||||
if ( default_directory[0] == '/' )
|
||||
#else
|
||||
buf[pos++] = '\\' ;
|
||||
if ( default_directory[0] == '\\' )
|
||||
#endif
|
||||
*/
|
||||
#ifdef S4UNIX
|
||||
if ( file_name[0] != '/' && default_directory_len > 0 )
|
||||
buf[pos++] = '/' ;
|
||||
#else
|
||||
if ( file_name[0] != '\\' && default_directory_len > 0 )
|
||||
buf[pos++] = '\\' ;
|
||||
#endif
|
||||
{
|
||||
if ( pos+2 >= buf_len )
|
||||
return ;
|
||||
#ifdef S4UNIX
|
||||
buf[pos++] = '/' ;
|
||||
if ( default_directory[0] == '/' )
|
||||
#else
|
||||
buf[pos++] = '\\' ;
|
||||
if ( default_directory[0] == '\\' )
|
||||
#endif
|
||||
default_directory++ ;
|
||||
if ( default_directory[0] == '/' || default_directory[0] == '\\' )
|
||||
default_directory++ ;
|
||||
|
||||
default_directory_len = strlen(default_directory) ;
|
||||
default_directory_len = strlen(default_directory) ;
|
||||
|
||||
u4ncpy( buf+pos, default_directory, buf_len - pos ) ;
|
||||
pos += default_directory_len ;
|
||||
}
|
||||
u4ncpy( buf+pos, default_directory, buf_len - pos ) ;
|
||||
pos += default_directory_len ;
|
||||
}
|
||||
|
||||
if ( pos >= buf_len )
|
||||
return ;
|
||||
|
||||
if ( pos > 0 )
|
||||
{
|
||||
/* Soragna 20 Giugno 1995. Pure questo non sfugge.
|
||||
#ifdef S4UNIX
|
||||
if ( buf[pos-1] != '/' )
|
||||
buf[pos++] = '/' ;
|
||||
if ( file_name[0] == '/' )
|
||||
file_name++ ;
|
||||
#else
|
||||
if ( buf[pos-1] != '\\' )
|
||||
buf[pos++] = '\\' ;
|
||||
if ( file_name[0] == '\\' )
|
||||
file_name++ ;
|
||||
#endif
|
||||
*/
|
||||
if ( buf[pos-1] != '/' && buf[pos-1] != '\\' )
|
||||
#ifdef S4UNIX
|
||||
if ( buf[pos-1] != '/' )
|
||||
buf[pos++] = '/' ;
|
||||
if ( file_name[0] == '/' )
|
||||
file_name++ ;
|
||||
#else
|
||||
if ( buf[pos-1] != '\\' )
|
||||
buf[pos++] = '\\' ;
|
||||
if ( file_name[0] == '\\' )
|
||||
file_name++ ;
|
||||
buf[pos++] = '\\' ;
|
||||
#endif
|
||||
if ( file_name[0] == '/' || file_name[0] == '\\' )
|
||||
file_name++ ;
|
||||
}
|
||||
|
||||
u4ncpy( buf+pos, file_name, buf_len-pos ) ;
|
||||
@ -146,11 +178,16 @@ void S4FUNCTION u4name_piece( char *result, int len_result, char *from, int giv
|
||||
{
|
||||
switch ( from[on_pos] )
|
||||
{
|
||||
#ifdef S4UNIX
|
||||
/*
|
||||
Soragna 20 Giugno 1995. Questo era quello che faceva piu' danni.
|
||||
#ifdef S4UNIX
|
||||
case '/':
|
||||
#else
|
||||
case '\\':
|
||||
#endif
|
||||
*/
|
||||
case '/':
|
||||
#else
|
||||
case '\\':
|
||||
#endif
|
||||
case ':':
|
||||
if (name_pos == 0) name_pos = on_pos + 1 ;
|
||||
are_past_ext = 1 ;
|
||||
@ -268,11 +305,14 @@ int S4FUNCTION u4name_path( char *result, int len_result, char *from )
|
||||
for( on_pos = 0 ; result[on_pos] != 0 ; on_pos++ ) ;
|
||||
|
||||
for( ; on_pos >= 0 ; on_pos-- )
|
||||
#ifdef S4UNIX
|
||||
if( result[on_pos] == '/' || result[on_pos] == ':' ) break ; /* end of path */
|
||||
#else
|
||||
if( result[on_pos] == '\\' || result[on_pos] == ':' ) break ; /* end of path */
|
||||
#endif
|
||||
/* Soragna 20 Giugno 1995. Anche questo puo' causare gravi macelli.
|
||||
#ifdef S4UNIX
|
||||
if( result[on_pos] == '/' || result[on_pos] == ':' ) break ;
|
||||
#else
|
||||
if( result[on_pos] == '\\' || result[on_pos] == ':' ) break ;
|
||||
#endif
|
||||
*/
|
||||
if( result[on_pos] == '/' || result[on_pos] == '\\' || result[on_pos] == ':' ) break ; /* end of path */
|
||||
|
||||
if( on_pos < len_result )
|
||||
result[++on_pos] = '\0' ;
|
||||
|
Loading…
x
Reference in New Issue
Block a user