home *** CD-ROM | disk | FTP | other *** search
- #ifndef OLDDIR
- #include <sys/types.h>
- #include <stdio.h>
- #include <sys/stat.h>
- #include <string.h>
- #ifdef SYSV
- #include <dirent.h>
- #endif
- #include <sys/dir.h>
- listfd(yesprint)
- /* list files only of type "file" in the current directory */
- /* the "yesprint" thing is a horrible kludge, added to correct
- a horrible kludge when the filename-completion was added ...
- ad nauseam */
- {
- DIR *dirp;
- char line[233],fnmine[833];
- int k;
- #ifdef SYSV
- struct dirent dir, *p, *readdir();
- #else
- struct direct dir, *p, *readdir();
- #endif
- char *fn, *fgets();
- extern char *zork[300];
- int i;
- char *malloc();
-
-
- p= &dir;
- dirp=opendir(".");
- if(dirp==NULL){
- return(-1);
- }
- line[0]=0;
- i=0;
- zork[i]=(char * )0;
- while(p=readdir(dirp))
- {
- fn=p->d_name;
- /* fprintf(stderr,"fn=%x,p=%x,p->d_name=%x, *fn=%c\n",*/
- /* fn,p,p->d_name,*fn);*/
- /* {int i;for(i=0;i<5;i++)fprintf(stderr,"%o ",fn[i]);}*/
- if(*fn=='.')continue;
- if(mymode(fn)&040000) /*it's a dir*/continue;
- if((k=kindex(fn,".txt"))<0)continue;
- (void)strcpy(fnmine,fn);
- fnmine[k]=0;
- /* puts(fnmine);*/
- zork[i]=malloc((unsigned)strlen(fnmine)+1);
- if(!zork[i])exit(1);
- (void)strcpy(zork[i],fnmine);
- /* puts(zork[i]);*/
- i++;
- zork[i]=(char * )0;
- }
- closedir(dirp);
- /* puts(line);*/
- mydumbsort(zork);
- line[0]=0;
- for(i=0;zork[i];i++)
- {
- int jim;
- strcat(line,zork[i]);
- /* free(zork[i]);*/
- strcat(line," ");
- jim=strlen(line);
- if(jim>65){
- if(yesprint)puts(line);
- line[0]=0;
- }
- jim=strlen(line);
- while( (jim%9) ){
- strcat(line," ");
- jim++;
- }
- if(jim>65){
- if(yesprint)puts(line);
- line[0]=0;
- }
- /* if((i%5)==4){*/
- /**/
- /* puts(line);*/
- /* line[0]=0;*/
- /* }*/
-
- }
- if(yesprint)puts(line);
- return 1;
- }
- mydumbsort(p)
- char **p;
- {
- /*dumb bubble sort of pointers*/
- int i,j,n;
- char *t;
- if(p[0]==(char*)0)return; /*no elements*/
- if(p[1]==(char*)0)return; /* one element*/
- for(i=0;p[i];i++) ;
- n=i;
- for(i=0;i<n-1;i++)
- for(j=i+1;j<n;j++)
- /* if(*p[i]< *p[j]){*/
- if(strcmp(p[i],p[j])>0){
- t=p[i];
- p[i]=p[j];
- p[j]=t;
-
- }
-
- }
- #else
- /* this is an entire replacement for listfd() for old-
- style 14-character name, 2-byte inode no. style directories */
- listfd(yesprint)
- /* list files only of type "file" in the current directory */
- {
- char line[233],fnmine[833];
- int k;
- char *fn, *fgets();
- extern char *zork[300];
- int i,fd;
- char *malloc();
- char mumble[17];
-
-
- fd=open(".",0);
-
- if(fd<0){
- return(-1);
- }
- line[0]=0;
- i=0;
- zork[i]=(char * )0;
- while( read(fd,mumble,16)==16)
- {
- if(mumble[0]==0&&mumble[1]==0)continue;/*zeroed inode no.*/
- fn= mumble+2;/*filename*/
- mumble[16]=0;/*make sure null terminated*/
- if(*fn=='.')continue;/*skip all dot files*/
- if(mymode(fn)&040000) /*it's a dir*/continue;
- if((k=kindex(fn,".txt"))<0)continue;
- (void)strcpy(fnmine,fn);
- fnmine[k]=0;
- zork[i]=malloc((unsigned)strlen(fnmine)+1);
- if(!zork[i])exit(1);
- (void)strcpy(zork[i],fnmine);
- i++;
- zork[i]=(char * )0;
- }/*end while*/
- i=close(fd);
- if(i<0)exit(7);
- mydumbsort(zork);
- line[0]=0;
- for(i=0;zork[i];i++)
- {
- int jim;
- strcat(line,zork[i]);
- /* free(zork[i]);*/
- strcat(line," ");
- jim=strlen(line);
- if(jim>65){
- if(yesprint)puts(line);
- line[0]=0;
- }
- jim=strlen(line);
- while( (jim%9) ){
- strcat(line," ");
- jim++;
- }
- if(jim>65){
- if(yesprint)puts(line);
- line[0]=0;
- }
-
- }
- if(yesprint)puts(line);
- return 1;
- }
- mydumbsort(p)
- char **p;
- {
- /*dumb bubble sort of pointers*/
- int i,j,n;
- char *t;
- if(p[0]==(char*)0)return; /*no elements*/
- if(p[1]==(char*)0)return; /* one element*/
- for(i=0;p[i];i++) ;
- n=i;
- for(i=0;i<n-1;i++)
- for(j=i+1;j<n;j++)
- if(strcmp(p[i],p[j])>0){
- t=p[i];
- p[i]=p[j];
- p[j]=t;
-
- }
-
- }
- #endif
-