From d881b6e81e20267c192f6c05c628eecd061b0f42 Mon Sep 17 00:00:00 2001 From: midipix Date: Sun, 17 Jul 2016 04:35:19 -0400 Subject: driver: added --sysroot support. --- src/driver/ptyc_driver_ctx.c | 12 ++++++++++++ src/internal/ptycon_driver_impl.h | 1 + src/skin/ptyc_skin_default.c | 4 ++++ 3 files changed, 17 insertions(+) (limited to 'src') diff --git a/src/driver/ptyc_driver_ctx.c b/src/driver/ptyc_driver_ctx.c index 459abe2..dfaa572 100644 --- a/src/driver/ptyc_driver_ctx.c +++ b/src/driver/ptyc_driver_ctx.c @@ -292,6 +292,10 @@ int ptyc_get_driver_ctx( nunits++; break; + case TAG_SYSROOT: + cctx.sysroot = entry->arg; + break; + case TAG_WAIT: cctx.drvflags |= PTYC_DRIVER_DBG_WAIT; break; @@ -301,6 +305,14 @@ int ptyc_get_driver_ctx( return ptyc_driver_usage(program,0,options,meta); } + if (cctx.sysroot && ptyc_open_dir(&cctx.hroot,0,cctx.sysroot,false)) { + if (flags & PTYC_DRIVER_VERBOSITY_ERRORS) + fprintf(stderr, + "%s: error: could not open sysroot directory '%s'", + program,cctx.sysroot); + return ptyc_get_driver_ctx_fail(meta); + } + if (!(ctx = ptyc_driver_ctx_alloc(meta,&cctx,nunits))) return ptyc_get_driver_ctx_fail(meta); diff --git a/src/internal/ptycon_driver_impl.h b/src/internal/ptycon_driver_impl.h index 67393ff..ee2e5ca 100644 --- a/src/internal/ptycon_driver_impl.h +++ b/src/internal/ptycon_driver_impl.h @@ -26,6 +26,7 @@ enum app_tags { TAG_VERSION, TAG_DAEMON, TAG_DEBUG, + TAG_SYSROOT, TAG_CAT, TAG_EXEC, TAG_WAIT, diff --git a/src/skin/ptyc_skin_default.c b/src/skin/ptyc_skin_default.c index 814f6c2..b558fff 100644 --- a/src/skin/ptyc_skin_default.c +++ b/src/skin/ptyc_skin_default.c @@ -17,6 +17,10 @@ const struct argv_option ptyc_default_options[] = { ARGV_OPTION_HYBRID_ONLY | ARGV_OPTION_HYBRID_SPACE, 0,0,"synonym for --exec."}, + {"sysroot", 0,TAG_SYSROOT,ARGV_OPTARG_REQUIRED,0,0,"", + "pass a handle to %s to the spawned child process, " + "and set it to be the child's intial root directory."}, + {"daemon", 0,TAG_DAEMON,ARGV_OPTARG_OPTIONAL,0,"default|always|never",0, "create a daemon thread and handle signals sent by the " "application's own controlling terminal. The default is " -- cgit v1.2.3