home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
DOS/V Power Report 1997 March
/
VPR9703A.ISO
/
OLS
/
Os2
/
LHA2P205
/
LHA2P205.LZH
/
lha2-2.05pre
/
source.lzh
/
src
/
path.c
< prev
next >
Wrap
C/C++ Source or Header
|
1996-02-25
|
2KB
|
103 lines
/*
* path.c --- convert to MS-DOS's and OS/2's(HPFS) pathname
* Copyright (C) 1988-1992, Haruyasu YOSHIZAKI
* Copyright (C) 1991-1995, Satoshi HIRAMATSU (OS/2 HPFS version)
*
* $Log$
*/
#include <stdio.h>
#include <string.h>
#include <time.h>
#include "port2.h"
#include "typedef.h"
#include "lh.h"
char *
form_name(unsigned char *p, int i)
{
int j, kflg;
kflg = 0;
for(j = 0; j < i; j++)
{
if(*p == 0)
break;
else if(kflg)
kflg = 0;
else if(iskanji(*p))
kflg = 1;
else if(ifs == FAT &&
(strchr("\"*+,./:;<=>?[\\]|\xff", *p) || *p <= ' '))
*p = '_';
else if(ifs == HPFS && (strchr("\"*/:<>?\\|\xff", *p) || *p <= ' '))
*p = '_';
p++;
}
if(kflg)
p--;
*p = '\0';
return p;
}
void
form_identifier(char *p)
{
char *q, *r;
q = strrchr(p, '.');
if(ifs == HPFS)
form_name(p, MAXPATHLEN);
else
{
if(q)
{
*q = '\0';
r = form_name(p, 8);
*r++ = '.';
q++;
form_name(q, 3);
strcpy(r, q);
}
else
form_name(p, 8);
}
}
void
form_path(char *p)
{
char *q, *r;
if(*p == DELIM)
p++;
r = p;
q = strchr(p, DELIM);
while(q)
{
*q = '\0';
form_identifier(p);
r = stpcpy(r, p);
*r++ = DELIM;
p = q + 1;
q = strchr(p, DELIM);
}
form_identifier(p);
strcpy(r, p);
}
#ifdef __DEBUG_PATH_C__
void
main(int argc, char *argv[])
{
form_path(argv[1]);
printf("%s\n", argv[1]);
}
#endif