Author: sandervanderburg
Date: Mon Feb 13 12:31:04 2012
New Revision: 32254
URL: https://nixos.org/websvn/nix/?rev=32254&sc=1

Log:
Added --no-lock option to disnix-activate

Modified:
   disnix/disnix/trunk/doc/manual/disnix-activate.xml
   disnix/disnix/trunk/src/activate/activate.c
   disnix/disnix/trunk/src/activate/activate.h
   disnix/disnix/trunk/src/activate/main.c

Modified: disnix/disnix/trunk/doc/manual/disnix-activate.xml
==============================================================================
--- disnix/disnix/trunk/doc/manual/disnix-activate.xml  Mon Feb 13 09:02:26 
2012        (r32253)
+++ disnix/disnix/trunk/doc/manual/disnix-activate.xml  Mon Feb 13 12:31:04 
2012        (r32254)
@@ -117,6 +117,16 @@
                                </listitem>
                        </varlistentry>
                        <varlistentry>
+                               <term><option>--no-lock</option></term>
+                               <listitem>
+                                       <para>
+                                               By enabling this option Disnix 
will not acquire any locks, which is not recommended.
+                                       </para>
+                               </listitem>
+                       </varlistentry>
+                       
+
+                       <varlistentry>
                                <term><option>-h</option>, 
<option>--help</option></term>
                                <listitem>
                                        <para>

Modified: disnix/disnix/trunk/src/activate/activate.c
==============================================================================
--- disnix/disnix/trunk/src/activate/activate.c Mon Feb 13 09:02:26 2012        
(r32253)
+++ disnix/disnix/trunk/src/activate/activate.c Mon Feb 13 12:31:04 2012        
(r32254)
@@ -31,7 +31,7 @@
 #include <activationmapping.h>
 #include <targets.h>
 
-int activate_system(gchar *interface, const gchar *new_manifest, const gchar 
*old_manifest, const gchar *coordinator_profile_path, gchar *profile, const 
gboolean no_coordinator_profile, const gboolean no_target_profiles, const 
gboolean no_upgrade)
+int activate_system(gchar *interface, const gchar *new_manifest, const gchar 
*old_manifest, const gchar *coordinator_profile_path, gchar *profile, const 
gboolean no_coordinator_profile, const gboolean no_target_profiles, const 
gboolean no_upgrade, const gboolean no_lock)
 {
     gchar *old_manifest_file;
     GArray *old_activation_mappings;
@@ -94,7 +94,11 @@
            old_activation_mappings = NULL;
 
        /* Try to acquire a lock */
-       status = lock(interface, distribution_array, profile);
+       
+       if(no_lock)
+           status = 0;
+       else
+           status = lock(interface, distribution_array, profile);
     
        if(status == 0)
        {
@@ -111,7 +115,9 @@
                }
                
                /* Try to release the lock */
-               unlock(interface, distribution_array, profile);
+               
+               if(!no_lock)
+                   unlock(interface, distribution_array, profile);
            
                /* If setting the profiles succeeds -> set the coordinator 
profile */
                if(status == 0 && !no_coordinator_profile)
@@ -127,12 +133,20 @@
            else
            {
                /* Try to release the lock */
-               unlock(interface, distribution_array, profile); 
+               
+               if(!no_lock)
+                   unlock(interface, distribution_array, profile);
+                   
                exit_status = status;
            }
        }
        else
+       {
            exit_status = status;
+           
+           if(!no_lock)
+               unlock(interface, distribution_array, profile); /* Try to 
release the lock */
+       }
     }
     
     /* Cleanup */

Modified: disnix/disnix/trunk/src/activate/activate.h
==============================================================================
--- disnix/disnix/trunk/src/activate/activate.h Mon Feb 13 09:02:26 2012        
(r32253)
+++ disnix/disnix/trunk/src/activate/activate.h Mon Feb 13 12:31:04 2012        
(r32254)
@@ -38,8 +38,9 @@
  * @param no_coordinator_profile Do not create a coordinator profile
  * @param no_target_profiles Do not create Disnix profiles on the target 
machines
  * @param no_upgrade Force Disnix to not look at the previous configuration
+ * @param no_lock Force Disnix to not acquire locks
  * @return 0 if the process succeeds, else a non-zero exit value
  */
-int activate_system(gchar *interface, const gchar *new_manifest, const gchar 
*old_manifest, const gchar *coordinator_profile_path, gchar *profile, const 
gboolean no_coordinator_profile, const gboolean no_target_profiles, const 
gboolean no_upgrade);
+int activate_system(gchar *interface, const gchar *new_manifest, const gchar 
*old_manifest, const gchar *coordinator_profile_path, gchar *profile, const 
gboolean no_coordinator_profile, const gboolean no_target_profiles, const 
gboolean no_upgrade, const gboolean no_lock);
 
 #endif

Modified: disnix/disnix/trunk/src/activate/main.c
==============================================================================
--- disnix/disnix/trunk/src/activate/main.c     Mon Feb 13 09:02:26 2012        
(r32253)
+++ disnix/disnix/trunk/src/activate/main.c     Mon Feb 13 12:31:04 2012        
(r32254)
@@ -34,6 +34,7 @@
     fprintf(stderr, "--target-property targetProperty\n");
     fprintf(stderr, "--no-coordinator-profile\n");
     fprintf(stderr, "--no-target-profiles\n");
+    fprintf(stderr, "--no-lock\n");
     fprintf(stderr, "\n");
     
     fprintf(stderr, "%s {-h | --help}\n", command);
@@ -52,6 +53,7 @@
        {"no-coordinator-profile", no_argument, 0, 'c'},
        {"no-target-profiles", no_argument, 0, 'C'},
        {"no-upgrade", no_argument, 0, 'u'},
+       {"no-lock", no_argument, 0, 'l'},
        {"help", no_argument, 0, 'h'},
        {0, 0, 0, 0}
     };
@@ -62,6 +64,7 @@
     int no_coordinator_profile = FALSE;
     int no_target_profiles = FALSE;
     int no_upgrade = FALSE;
+    int no_lock = FALSE;
     
     /* Parse command-line options */
     while((c = getopt_long(argc, argv, "o:p:h", long_options, &option_index)) 
!= -1)
@@ -89,6 +92,9 @@
            case 'u':
                no_upgrade = TRUE;
                break;
+           case 'l':
+               no_lock = TRUE;
+               break;
            case 'h':
            case '?':
                print_usage(argv[0]);
@@ -107,5 +113,5 @@
        return 1;
     }
     else
-       return activate_system(interface, argv[optind], old_manifest, 
coordinator_profile_path, profile, no_coordinator_profile, no_target_profiles, 
no_upgrade); /* Execute activation operation */
+       return activate_system(interface, argv[optind], old_manifest, 
coordinator_profile_path, profile, no_coordinator_profile, no_target_profiles, 
no_upgrade, no_lock); /* Execute activation operation */
 }
_______________________________________________
nix-commits mailing list
[email protected]
http://lists.science.uu.nl/mailman/listinfo/nix-commits

Reply via email to