home *** CD-ROM | disk | FTP | other *** search
- #include <stdio.h>
-
- char *unix2vms(s)
- char *s;
- {
- static char *buffer = NULL, *buf;
- char *t, *p, *q, *x, *strchr(), *si_getenv();
- static int debug = 0;
-
- if(buffer == NULL) {
- buffer = (char *)malloc(257);
- buf = (char *)malloc(257);
- }
- t = buffer;
- memset(t, 0, 257);
- strcpy(buf,s);
- p = strchr(buf,'='); /*get rid of any '='s*/
- if (p != NULL) {
- *p = '_';
- while ( (q = strchr(p+1,'=')) != NULL) {*q = '_';p = q;}
- }
-
- if (debug) fprintf(stderr,"unix2vms called :%s:",s);
- if (strchr(buf,'[') != NULL) { /*crude test for already vms files*/
- strcpy(buffer,buf);
- if (debug) fprintf(stderr,"translated0 to :%s:\n",buffer);
- return(buffer);
- }
-
- if (strcmp(buf,".") == 0 || strcmp(buf,"./") == 0) {
- strcpy(buffer,"[]");
- /* strcpy(buffer,si_getenv("PATH"));*/
- /* whats wrong here? commented version probably is needed somewhere
- or why would I have done it?*/
- if (debug) fprintf(stderr,"translated1 to :%s:\n",buffer);
- return(buffer);
- }
-
- if (strcmp(buf,"..") == 0 || strcmp(buf,"../") == 0) {
- strcpy(buffer,"[-]");
- if (debug) fprintf(stderr,"translated2 to :%s:\n",buffer);
- return(buffer);
- }
-
- if (strchr(buf, '/') == NULL) { /*is it a straight filename*/
- if ((q = strchr(buf,']')) == NULL) q = buf;
- p = strchr(q,'.');
- if (p != NULL) {
- while ( (q = strchr(p+1,'.')) != NULL) {*p = '_';p = q;}
- }
- strcpy(buffer,buf);
- if (debug) fprintf(stderr,"translated3 to :%s:\n",buffer);
- return(buffer);
- }
-
- x = buf;
- if (*x == '/') { /* does it start with a / */
- p = strchr(x+1,'/');
- *p = '\0';
- strcpy(t, x+1); /*yes - put first element:*/
- t += strlen(t);
- strcat(t,":[000000");
- x = p+1;
- }
- else if ((*x == '.') && (*(x+1) == '/') && (strchr(x+2, '/') == NULL)) {
- strcat(t,"[");
- x = x+2; /* ./fred ignore the ./ */
- }
- else strcat(t,"[");
-
- while (*x) {
- p = strchr(x,'/');
- if (p != NULL) {
- *p = '\0';
- if (*x == '.' && *(x+1) == '.' && *(x+2) == '\0') strcat(t,".-");
- else if (*x == '.' && *(x+1) == '\0');
- else {
- strcat(t,".");
- strcat(t,x);
- }
- x = p+1;
- if (*x == '\0') strcat(t,"]");
- }
- else {
- strcat(t,"]");
- p = strchr(x,'.');
- if (p != NULL) {
- while ( (q = strchr(p+1,'.')) != NULL) {*p = '_';p = q;}
- }
- strcat(t,x);
- x = x +strlen(x);
- }
- }
- if (debug) fprintf(stderr,"translated4 to :%s:\n",buffer);
- return(buffer);
- }
-