9a10 > #define ROOT_MENU "Root Menu" 11d11 < 149a150,165 > /* /gopher-data/ hack by Ian C Blenke */ > if(ar[i]->host[0]) { > char host[MAX_STRING_LEN]; > > HOSTNAME(host,MAX_STRING_LEN); > if(strncmp(ar[i]->host, host, strlen(host))==0) > /* problem: if we fall through here we may get // */ > if(ar[i]->path[0]) { > fprintf(fd, > "
  • lnum++, (ar[i]->path)+1); > fprintf(fd,">%s%c",ar[i]->name,LINEFEED); > break; > } /* fall through if not type 0 or 1 */ > } > 291a308,359 > /* GN - Patch #1 - for looks - Ian C. Blenke */ > void get_link_name_from_dir(char *dir, char *munge, char *return_name) > { > char munged_name[MAX_STRING_LEN]; > int i, len, count; > char dir_name[MAX_STRING_LEN]; > gopher_ent head; > gopher_ent *p, *r; > > /* strip out the actual parent path name */ > len=strlen(dir); > while(len>0) > { > if(dir[len]=='/') break; > len--; > } > strncpy(dir_name, dir, len); > dir_name[len]='\0'; > /* strip out the virtual parent path name */ > strcpy(munged_name, munge+GOPHER_LOC_LEN); > len=strlen(munged_name); > if((len==0)||(len==1)) > { > strcpy(return_name, ROOT_MENU); > return; > } > while(len>1) > { > if(munged_name[len]=='/') break; > len--; > } > munged_name[len-1]='\0'; > strcpy(munged_name, munged_name+len); > > /* parse the parent menu file */ > head.next=NULL; > count=add_links_from_file(dir_name, "menu", &head); > p=&head; > > /* loop through the chain */ > for(i=0; i { > if(strcmp((p->path)+2, munged_name)==0) > strcpy(return_name, p->name); > r=p->next; > free(p); > p=r; > if(p==NULL) break; > } > return; > } > 293,294c361 < DIR *d; < struct DIR_TYPE *dstruct; --- > FILE *fmenu; 298a366,367 > char menu_name[MAX_STRING_LEN]; > char parent_name[MAX_STRING_LEN]; 305a375 > make_full_path(name, "menu", menu_name); 307,308c377,378 < if(!(d=opendir(name))) < client_error(fd,BAD_FILE); --- > if(!(fmenu=fopen(menu_name, "r"))) > client_error(fd, BAD_FILE); 310,311c380 < while(dstruct=readdir(d)) { < char *fn; --- > fclose(fmenu); 313,315c382 < fn=dstruct->d_name; < if(ignore(fn)) < continue; --- > num_entries=add_links_from_file(name, "menu", &head); 317,329c384,391 < if(fn[0]=='.') { < if(!strcmp(fn,".cap")) < cap_file=1; < else < num_entries+=add_links_from_file(name,fn,&head); < } < else { < add_local_link(fn,&head); < num_entries++; < } < } < fprintf(fd," Gopher Index of %s%c",unmunged_name,LINEFEED); < fprintf(fd,"

    Gopher Index of %s

    %c",unmunged_name,LINEFEED); --- > get_link_name_from_dir(name, unmunged_name, parent_name); > fprintf(fd,"
    %c",LINEFEED); > fprintf(fd," %s %c",parent_name,LINEFEED); > fprintf(fd,"%c", LINEFEED); > fprintf(fd,"
    %c",LINEFEED); > fprintf(fd,"%c", LINEFEED); > fprintf(fd,"

    Harris ESS InfoServer Gopher

    %c",LINEFEED); > fprintf(fd,"

    %s

    %c", parent_name, LINEFEED); 338c400 < closedir(d); --- > fprintf(fd,"%c", LINEFEED);