Files
Arquivotheca.SunOS-4.1.4/usr.etc/suninstall/lib/sort_mount.c
seta75D ff309bfe1c Init
2021-10-11 18:37:13 -03:00

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);
}