commit:     a6cc7f06cf3807a0e0590697e1f14e6ab9055271
Author:     William Hubbs <w.d.hubbs <AT> gmail <DOT> com>
AuthorDate: Wed Feb 21 19:49:41 2018 +0000
Commit:     William Hubbs <williamh <AT> gentoo <DOT> org>
CommitDate: Wed Feb 21 19:49:41 2018 +0000
URL:        https://gitweb.gentoo.org/proj/openrc.git/commit/?id=a6cc7f06

rc.c: remove PATH_MAX references

 src/rc/rc.c | 17 +++++++++--------
 1 file changed, 9 insertions(+), 8 deletions(-)

diff --git a/src/rc/rc.c b/src/rc/rc.c
index 110591e4..1f462c66 100644
--- a/src/rc/rc.c
+++ b/src/rc/rc.c
@@ -336,26 +336,26 @@ set_krunlevel(const char *level)
        return true;
 }
 
-static size_t
-get_krunlevel(char *buffer, int buffer_len)
+static char *get_krunlevel(void)
 {
+       char *buffer = NULL;
        FILE *fp;
        size_t i = 0;
 
        if (!exists(RC_KRUNLEVEL))
-               return 0;
+               return NULL;
        if (!(fp = fopen(RC_KRUNLEVEL, "r"))) {
                eerror("fopen `%s': %s", RC_KRUNLEVEL, strerror(errno));
-               return 0;
+               return NULL;
        }
 
-       if (fgets(buffer, buffer_len, fp)) {
+       if (getline(&buffer, &i, fp) != -1) {
                i = strlen(buffer);
                if (buffer[i - 1] == '\n')
                        buffer[i - 1] = 0;
        }
        fclose(fp);
-       return i;
+       return buffer;
 }
 
 static void
@@ -743,7 +743,7 @@ int main(int argc, char **argv)
        RC_STRING *service;
        bool going_down = false;
        int depoptions = RC_DEP_STRICT | RC_DEP_TRACE;
-       char krunlevel [PATH_MAX];
+       char *krunlevel = NULL;
        char pidstr[10];
        int opt;
        bool parallel;
@@ -892,7 +892,8 @@ int main(int argc, char **argv)
                    (strcmp(newlevel, RC_LEVEL_SYSINIT) != 0 &&
                        strcmp(newlevel, getenv("RC_BOOTLEVEL")) != 0))
                {
-                       if (get_krunlevel(krunlevel, sizeof(krunlevel))) {
+                       krunlevel = get_krunlevel();
+                       if (krunlevel) {
                                newlevel = krunlevel;
                                set_krunlevel(NULL);
                        }

Reply via email to