79 lines
2.8 KiB
C
79 lines
2.8 KiB
C
/* @(#)sort_mount.c 1.1 94/10/31 SMI */
|
|
|
|
/*
|
|
* Copyright (c) 1988 by Sun Microsystems, Inc.
|
|
*/
|
|
|
|
#include "install.h"
|
|
|
|
extern char *sprintf();
|
|
|
|
sort_mountlist(progname)
|
|
char *progname;
|
|
{
|
|
register i, j, jj;
|
|
char str1[10], str2[MINSIZE], str3[2];
|
|
int tmpcount, find_count();
|
|
FILE *mountlist;
|
|
struct tbl {
|
|
char part[10], mountpt[MINSIZE], preserve;
|
|
int count;
|
|
} tbl[30];
|
|
char filename[MAXPATHLEN];
|
|
char buf[BUFSIZ];
|
|
|
|
(void) sprintf(filename,"%smountlist",INSTALL_DIR);
|
|
if ((mountlist = fopen(filename,"r")) == NULL) {
|
|
(void) fprintf(stderr,
|
|
"%s:\tUnable to open %s in sort_mountlist\n",
|
|
progname, filename);
|
|
return(-1);
|
|
}
|
|
for (i=0; fgets(buf,BUFSIZ,mountlist) != NULL ;i++) {
|
|
bzero(str1,sizeof(str1));
|
|
bzero(str2,sizeof(str2));
|
|
bzero(str3,sizeof(str3));
|
|
tbl[i].preserve = ' ';
|
|
tbl[i].count = 0;
|
|
(void) sscanf(buf,"partition=%s mountpt=%s preserve=%s\n",
|
|
str1,str2,str3);
|
|
(void) strcpy(tbl[i].part,str1);
|
|
(void) strcpy(tbl[i].mountpt,str2);
|
|
tbl[i].preserve = str3[0];
|
|
tbl[i].count = find_count(tbl[i].mountpt);
|
|
}
|
|
(void) fclose(mountlist);
|
|
for (j = 0;j < i; j++) {
|
|
for (jj = j+1; jj < i; jj++) {
|
|
if ( tbl[j].count > tbl[jj].count ) {
|
|
(void) strcpy(str1,tbl[j].part);
|
|
(void) strcpy(str2,tbl[j].mountpt);
|
|
str3[0] = tbl[j].preserve;
|
|
tmpcount = tbl[j].count;
|
|
(void) strcpy(tbl[j].part,tbl[jj].part);
|
|
(void) strcpy(tbl[j].mountpt,tbl[jj].mountpt);
|
|
tbl[j].preserve = tbl[jj].preserve;
|
|
tbl[j].count = tbl[jj].count;
|
|
(void) strcpy(tbl[jj].part,str1);
|
|
(void) strcpy(tbl[jj].mountpt,str2);
|
|
tbl[jj].preserve = str3[0];
|
|
tbl[jj].count = tmpcount;
|
|
}
|
|
}
|
|
}
|
|
(void) sprintf(filename,"%smountlist",INSTALL_DIR);
|
|
if ((mountlist = fopen(filename,"w")) == NULL) {
|
|
(void) fprintf(stderr,
|
|
"%s:\nUnable to open %s in sort_mountlist\n",
|
|
progname, filename);
|
|
return(-1);
|
|
}
|
|
for (j=0; j < i ;j++) {
|
|
(void) fprintf(mountlist,
|
|
"partition=%s mountpt=%s preserve=%c\n", tbl[j].part,
|
|
tbl[j].mountpt,tbl[j].preserve);
|
|
}
|
|
(void) fclose(mountlist);
|
|
return(0);
|
|
}
|