Franky,
The following patch fixes lk_mountSearch_discover when /proc/mounts is
larger than 1024 bytes. Please apply.
diff -r 550d970756a8 src/mountSearch.c
--- a/src/mountSearch.c Sun Oct 01 21:55:02 2006 -0400
+++ b/src/mountSearch.c Wed Oct 18 22:49:53 2006 -0400
@@ -25,22 +25,44 @@ int fd, ret;
int fd, ret;
char *ini, *fin;
+static char *read_whole_file(char *filename)
+{
+ int len = BUFSIZ;
+ char *ptr = NULL;
+ FILE *fp = fopen(filename, "rb");
+ int size;
+
+ if (!fp)
+ goto err;
+
+ ptr = malloc(len);
+ if (!ptr)
+ goto err;
+
+ while ((size = fread(ptr + len - BUFSIZ, 1, BUFSIZ, fp)) == BUFSIZ) {
+ ptr = realloc(ptr, len + BUFSIZ);
+ if (!ptr)
+ goto err;
+
+ len += BUFSIZ;
+ }
+ *(ptr + len - BUFSIZ + size) = 0;
+ fclose(fp);
+err:
+ return ptr;
+}
+
int lk_mountSearch_discover(char **device, char **mountPoint)
{
- char buf[1024], *dev, *mountp, *aux;
+ char *buf, *dev, *mountp, *aux;
int len, pos, kfd, found=0;
- fd = open(PROC_MOUNTS, O_RDONLY);
- if(fd == -1) {
+ buf = read_whole_file(PROC_MOUNTS);
+ if (!buf)
+ {
lk_errors_set(E_MFINDERR);
return -1;
}
- ret = read(fd, buf, 1024);
- if(ret == -1) {
- lk_errors_set(E_MFINDERR);
- return -1;
- }
- buf[ret] = '\0';
/* fprintf(stderr, "%s\n\n", buf); */
ini = buf;
@@ -50,7 +72,7 @@ int lk_mountSearch_discover(char **devic
*fin = '\0';
/* fprintf(stderr, "%s\n", ini); */
if(strstr(ini, "omfs")) {
- dev = ini;
+ dev = ini;
aux = strstr(dev, " ");
*aux = '\0';
ini = aux + 1;
@@ -60,6 +82,7 @@ int lk_mountSearch_discover(char **devic
if(((*device = strdup(dev)) == NULL) ||
((*mountPoint = strdup(mountp)) == NULL)) {
lk_errors_set(E_NOMOUNT);
+ free(buf);
return -1;
}
/* fprintf(stderr, "%s %s\n", *device, *mountPoint); */
@@ -69,6 +92,7 @@ int lk_mountSearch_discover(char **devic
free(*device);
*mountPoint=NULL;
lk_errors_set(E_NOMOUNT);
+ free(buf);
return -1;
}
found++;
@@ -77,6 +101,8 @@ int lk_mountSearch_discover(char **devic
}
ini = fin + 1;
}
+ free(buf);
+
if(found != 1) {
lk_errors_set((found==0)?E_NOMOUNT:E_MANYMOUNT);
return -found-1;
--
Bob Copeland %% www.bobcopeland.com
-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
linux-karma-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/linux-karma-devel