FAQ Search Today's Posts Mark Forums Read
» Video Reviews

» Linux Archive

Linux-archive is a website aiming to archive linux email lists and to make them easily accessible for linux users/developers.


» Sponsor

» Partners

» Sponsor

Go Back   Linux Archive > Debian > Debian Development

 
 
LinkBack Thread Tools
 
Old 11-03-2010, 10:56 AM
Martin Sivak
 
Default Remove mkdirChain() from isys, use g_mkdir_with_parents()

Ack.

--
Martin Sivák
msivak@redhat.com
Red Hat Czech
Anaconda team / Brno, CZ

----- "David Cantrell" <dcantrell@redhat.com> wrote:

> Replace uses of mkdirChain() with g_mkdir_with_parents() and
> remove the existing mkdirChain() code from isys/imount.*
> ---
> loader/driverdisk.c | 15 +++++++++---
> loader/loader.c | 6 +++-
> loader/method.c | 6 +++-
> pyanaconda/isys/imount.c | 52
> +--------------------------------------------
> pyanaconda/isys/imount.h | 1 -
> 5 files changed, 21 insertions(+), 59 deletions(-)
>
> diff --git a/loader/driverdisk.c b/loader/driverdisk.c
> index 2688c82..9b4c710 100644
> --- a/loader/driverdisk.c
> +++ b/loader/driverdisk.c
> @@ -265,9 +265,15 @@ static int loadDriverDisk(struct loaderData_s
> *loaderData, char *mntpt) {
> logMessage(DEBUGLVL, "Kernel version: %s", kernelver);
>
> sprintf(file, DD_RPMDIR_TEMPLATE, disknum);
> - mkdirChain(file);
> - mkdirChain(DD_MODULES);
> - mkdirChain(DD_FIRMWARE);
> +
> + if (g_mkdir_with_parents(file, 0755) == -1)
> + logMessage(ERROR, "mkdir error on %s: %m", file);
> +
> + if (g_mkdir_with_parents(DD_MODULES, 0755) == -1)
> + logMessage(ERROR, "mkdir error on %s: %m", DD_MODULES);
> +
> + if (g_mkdir_with_parents(DD_FIRMWARE, 0755) == -1)
> + logMessage(ERROR, "mkdir error on %s: %m", DD_FIRMWARE);
>
> if (!FL_CMDLINE(flags)) {
> startNewt();
> @@ -293,7 +299,8 @@ static int loadDriverDisk(struct loaderData_s
> *loaderData, char *mntpt) {
>
> /* ensure updates directory exists */
> sprintf(file, "/lib/modules/%s/updates", kernelver);
> - mkdirChain(file);
> + if (g_mkdir_with_parents(file, 0755) == -1)
> + logMessage(ERROR, "mkdir error on %s: %m", file);
>
> /* make sure driver update are referenced from system module dir
> but from a different subdir, initrd overlays use the main
> diff --git a/loader/loader.c b/loader/loader.c
> index 88d7a7a..50daeb0 100644
> --- a/loader/loader.c
> +++ b/loader/loader.c
> @@ -2146,8 +2146,10 @@ int main(int argc, char ** argv) {
>
> /* make sure /tmp/updates exists so that magic in anaconda to */
> /* symlink rhpl/ will work */
> - if (access("/tmp/updates", F_OK))
> - mkdirChain("/tmp/updates");
> + if (access("/tmp/updates", F_OK)) {
> + if (g_mkdir_with_parents("/tmp/updates", 0755) == -1)
> + logMessage(ERROR, "mkdir error on /tmp/updates: %m");
> + }
>
> add_fw_search_dir(&loaderData, "/tmp/updates/firmware");
> add_fw_search_dir(&loaderData, "/tmp/product/firmware");
> diff --git a/loader/method.c b/loader/method.c
> index 844048f..d84a2e8 100644
> --- a/loader/method.c
> +++ b/loader/method.c
> @@ -313,8 +313,10 @@ int unpackCpioBall(char * ballPath, char *
> rootDir) {
> if (access(ballPath, R_OK))
> return 1;
>
> - if (access(rootDir, R_OK))
> - mkdirChain(rootDir);
> + if (access(rootDir, R_OK)) {
> + if (g_mkdir_with_parents(rootDir, 0755) == -1)
> + logMessage(ERROR, "mkdir error on %s: %m", rootDir);
> + }
>
> buf = (char *)malloc(PATH_MAX);
> cwd = getcwd(buf, PATH_MAX);
> diff --git a/pyanaconda/isys/imount.c b/pyanaconda/isys/imount.c
> index ed0f5a7..39265a0 100644
> --- a/pyanaconda/isys/imount.c
> +++ b/pyanaconda/isys/imount.c
> @@ -27,14 +27,13 @@
> #include <sys/types.h>
> #include <sys/wait.h>
> #include <unistd.h>
> +#include <glib.h>
>
> #include "imount.h"
> #include "log.h"
>
> #define _(foo) foo
>
> -static int mkdirIfNone(char * directory);
> -
> static int readFD(int fd, char **buf) {
> char *p;
> size_t size = 4096;
> @@ -88,7 +87,7 @@ int mountCommandWrapper(int mode, char *dev, char
> *where, char *fs,
> case IMOUNT_MODE_MOUNT:
> case IMOUNT_MODE_BIND:
> cmd = "/bin/mount";
> - if (mkdirChain(where))
> + if (g_mkdir_with_parents(where, 0755))
> return IMOUNT_ERR_ERRNO;
> break;
> case IMOUNT_MODE_UMOUNT:
> @@ -264,31 +263,6 @@ int doPwUmount(char *where, char **err) {
> NULL, where, NULL, NULL, err);
> }
>
> -int mkdirChain(char * origChain) {
> - char * chain;
> - char * chptr;
> -
> - chain = alloca(strlen(origChain) + 1);
> - strcpy(chain, origChain);
> - chptr = chain;
> -
> - while ((chptr = strchr(chptr, '/'))) {
> - *chptr = '';
> - if (mkdirIfNone(chain)) {
> - *chptr = '/';
> - return IMOUNT_ERR_ERRNO;
> - }
> -
> - *chptr = '/';
> - chptr++;
> - }
> -
> - if (mkdirIfNone(chain))
> - return IMOUNT_ERR_ERRNO;
> -
> - return 0;
> -}
> -
> /* Returns true iff it is possible that the mount command that have
> returned
> * 'errno' might succeed at a later time (think e.g. not yet
> initialized USB
> * device, etc.) */
> @@ -304,25 +278,3 @@ int mountMightSucceedLater(int mountRc)
> }
> return rc;
> }
> -
> -static int mkdirIfNone(char * directory) {
> - int rc, mkerr;
> - char * chptr;
> -
> - /* If the file exists it *better* be a directory -- I'm not going
> to
> - actually check or anything */
> - if (!access(directory, X_OK)) return 0;
> -
> - /* if the path is '/' we get ENOFILE not found" from mkdir,
> rather
> - then EEXIST which is weird */
> - for (chptr = directory; *chptr; chptr++)
> - if (*chptr != '/') break;
> - if (!*chptr) return 0;
> -
> - rc = mkdir(directory, 0755);
> - mkerr = errno;
> -
> - if (!rc || mkerr == EEXIST) return 0;
> -
> - return IMOUNT_ERR_ERRNO;
> -}
> diff --git a/pyanaconda/isys/imount.h b/pyanaconda/isys/imount.h
> index d1b7cf3..3ce6387 100644
> --- a/pyanaconda/isys/imount.h
> +++ b/pyanaconda/isys/imount.h
> @@ -44,7 +44,6 @@
> int doBindMount(char* path, char *where, char **err);
> int doPwMount(char *dev, char *where, char *fs, char *options, char
> **err);
> int doPwUmount(char *where, char **err);
> -int mkdirChain(char * origChain);
> int mountMightSucceedLater(int mountRc);
>
> #endif
> --
> 1.7.2.3
>
> _______________________________________________
> Anaconda-devel-list mailing list
> Anaconda-devel-list@redhat.com
> https://www.redhat.com/mailman/listinfo/anaconda-devel-list

_______________________________________________
Anaconda-devel-list mailing list
Anaconda-devel-list@redhat.com
https://www.redhat.com/mailman/listinfo/anaconda-devel-list
 

Thread Tools




All times are GMT. The time now is 02:23 AM.

VBulletin, Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO ©2007, Crawlability, Inc.
Copyright ©2007 - 2008, www.linux-archive.org