]> git.cworth.org Git - fips/blobdiff - fips.c
Add explicit link to libpthread, to work around debugging issues
[fips] / fips.c
diff --git a/fips.c b/fips.c
index ce76e31421a586032012ae52dbaad8aabede699f..7276ce9fb28fa24f8e41abaf5bd2fc8bbd9734b3 100644 (file)
--- a/fips.c
+++ b/fips.c
  * THE SOFTWARE.
  */
 
-#include <stdio.h>
-#include <stdlib.h>
+#include "fips.h"
+
 #include <limits.h>
 #include <getopt.h>
 
+#include "execute.h"
+
 static void
 usage (void)
 {
@@ -33,16 +35,29 @@ usage (void)
               "\n"
               "Options:\n"
               "        -h, --help      show this help message\n"
+              "        -v, --verbose   print verbose messages about fips activity"
               "\n");
 }
 
 int
 main (int argc, char *argv[])
 {
-       int opt;
-       const char *short_options = "h";
+       int opt, ret;
+
+       /* The initial '+' means that getopt will stop looking for
+        * options after the first non-option argument. This means
+        * that a command such as:
+        *
+        *      fips glxgears -fullscreen
+        *
+        * Will do what is intended, (namely, have fips invoke
+        * "glxgears -fullscreen" rather than trying to interpret
+        * -fullscreen as options to fips itself.
+        */
+       const char *short_options = "+hv";
        const struct option long_options[] = {
                {"help", no_argument, 0, 'h'},
+               {"verbose", no_argument, 0, 'v'},
                {0, 0, 0, 0}
        };
 
@@ -56,10 +71,13 @@ main (int argc, char *argv[])
                case 'h':
                        usage ();
                        return 0;
+               case 'v':
+                       setenv ("FIPS_VERBOSE", "1", 1);
+                       break;
                case '?':
                        break;
                default:
-                       fprintf(stderr, "Internal error: "
+                       fprintf(stderr, "fips: Internal error: "
                                "unexpected getopt value: %d\n", opt);
                        exit (1);
                }
@@ -71,7 +89,9 @@ main (int argc, char *argv[])
                exit (1);
        }
 
-        return 0;
+       ret = execute_with_fips_preload (argc - optind, &argv[optind]);
+
+       return ret;
 }