1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
|
/* DOS specific routines
*/
#include <HTUtils.h>
#include <HTDOS.h>
/*
* Make a copy of the source argument in the result, allowing some extra
* space so we can append directly onto the result without reallocating.
*/
PRIVATE char * copy_plus ARGS2(char **, result, char *, source)
{
int length = strlen(source);
HTSprintf0(result, "%-*s", length+10, source);
(*result)[length] = 0;
return (*result);
}
/* PUBLIC HTDOS_wwwName()
** CONVERTS DOS Name into WWW Name
** ON ENTRY:
** dosname DOS file specification (NO NODE)
**
** ON EXIT:
** returns WWW file specification
**
*/
char * HTDOS_wwwName ARGS1(char *, dosname)
{
static char *wwwname;
char *cp_url = copy_plus(&wwwname, dosname);
for ( ; *cp_url != '\0' ; cp_url++)
if(*cp_url == '\\')
*cp_url = '/'; /* convert dos backslash to unix-style */
if(strlen(wwwname) > 3 && *cp_url == '/')
*cp_url = '\0';
#ifdef NOTUSED
if(*cp_url == ':') {
cp_url++;
*cp_url = '/'; /* terminate drive letter to survive */
}
#endif
return(wwwname);
}
/* PUBLIC HTDOS_name()
** CONVERTS WWW name into a DOS name
** ON ENTRY:
** wwwname WWW file name
**
** ON EXIT:
** returns DOS file specification
*/
char * HTDOS_name ARGS1(char *, wwwname)
{
static char *cp_url;
char *result;
int joe;
copy_plus(&cp_url, wwwname);
for (joe = 0; cp_url[joe] != '\0'; joe++) {
if (cp_url[joe] == '/') {
cp_url[joe] = '\\'; /* convert slashes to dos-style */
}
}
/* pesky leading slash, rudiment from file://localhost/ */
/* the rest of path may be with or without drive letter */
if((cp_url[1] == '\\') || (cp_url[0] != '\\')) {
result = cp_url;
} else {
result = cp_url+1;
}
CTRACE(tfp, "HTDOS_name changed `%s' to `%s'\n", wwwname, result);
return (result);
}
|