help-gnats
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Patch: use of 'database' command line option


From: Mel Hatzis
Subject: Patch: use of 'database' command line option
Date: Mon, 21 Oct 2002 16:10:19 -0700
User-agent: Mozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.0.0) Gecko/20020530

Please review the following patch that fixes a bug with
network mode determination when the gnats client utilities
(such as pr-edit) are invoked with the '--database' option.

Currently, if you have a 'databases' file with 2 entries,
such as:

  default:Bug database:/usr/local/com/gnatsdb
  test:Test DB::host.name.com:1529

and you invoke:

  echo "newval" | pr-edit --database test --replace field <prnum>

pr-edit will incorrectly determine networkmode is false
because the '--database' option is ignored when the
gnatsdbHasNetconn function is invoked. The gnatsdbHasNetconn
function is hardwired to only look at the 'default' database
when determining what mode is valid which is blatantly wrong.

This patch basically modifies gnatsdbHasNetconn so that it
takes a 'database_name' argument. The database entry associated
with this argument is used to determine network-mode and
'default' is used as a default if the database argument
is null.

--
Mel Hatzis
Juniper Networks, Inc.
Index: gnats.h
===================================================================
RCS file: /cvsroot/gnats/gnats/gnats/gnats.h,v
retrieving revision 1.51
diff -b -u -p -r1.51 gnats.h
--- gnats.h     14 Jul 2002 17:29:02 -0000      1.51
+++ gnats.h     21 Oct 2002 22:44:45 -0000
@@ -357,7 +357,7 @@ extern const char *get_prid_from_path (c
 extern const char *get_cat_prid_from_path (const char*);
 extern char *get_lock_path (const DatabaseInfo database, const char *prID);
 extern char *get_curr_date (void);
-extern int gnatsdbHasNetconn (void);
+extern int gnatsdbHasNetconn (const char *database_name);
 extern int isPrLocked (const DatabaseInfo database, const char *prNum);
 extern int fileExists (const char *filename);
 extern void setError (ErrorDesc *errorDesc, int errorCode, ...);
Index: getclose.c
===================================================================
RCS file: /cvsroot/gnats/gnats/gnats/getclose.c,v
retrieving revision 1.25
diff -b -u -p -r1.25 getclose.c
--- getclose.c  10 Feb 2002 18:24:02 -0000      1.25
+++ getclose.c  21 Oct 2002 22:44:46 -0000
@@ -317,7 +317,7 @@ main (int argc, char **argv)
 
   if (! networkmode)
     {
-      networkmode = gnatsdbHasNetconn ();
+      networkmode = gnatsdbHasNetconn (database_name);
     }
 
   if (! networkmode)
Index: internal.c
===================================================================
RCS file: /cvsroot/gnats/gnats/gnats/internal.c,v
retrieving revision 1.29
diff -b -u -p -r1.29 internal.c
--- internal.c  12 Nov 2001 18:23:25 -0000      1.29
+++ internal.c  21 Oct 2002 22:44:46 -0000
@@ -406,10 +406,14 @@ get_curr_date (void)
 }
 
 int
-gnatsdbHasNetconn (void)
+gnatsdbHasNetconn (const char *database_name)
 {
   const char *var = getenv ("GNATSDB");
-  if (var != NULL && var[0] != '\0')
+  if (database_name != NULL && database_name[0] != '\0')
+    {
+      return databaseSpecIsNetConn (database_name);
+    }
+  else if (var != NULL && var[0] != '\0')
     {
       if (strchr (var, ':') != NULL)
        {
Index: pr-age.c
===================================================================
RCS file: /cvsroot/gnats/gnats/gnats/pr-age.c,v
retrieving revision 1.16
diff -b -u -p -r1.16 pr-age.c
--- pr-age.c    31 Mar 2002 13:36:09 -0000      1.16
+++ pr-age.c    21 Oct 2002 22:44:46 -0000
@@ -166,7 +166,7 @@ main (int argc, char **argv)
 
   if (! networkmode)
     {
-      networkmode = gnatsdbHasNetconn ();
+      networkmode = gnatsdbHasNetconn (nameOfDatabase);
     }
 
   if (! networkmode)
Index: pr-edit.c
===================================================================
RCS file: /cvsroot/gnats/gnats/gnats/pr-edit.c,v
retrieving revision 1.35
diff -b -u -p -r1.35 pr-edit.c
--- pr-edit.c   2 Dec 2001 18:37:47 -0000       1.35
+++ pr-edit.c   21 Oct 2002 22:44:46 -0000
@@ -386,7 +386,7 @@ main (int argc, char **argv)
 
   if (! networkmode)
     {
-      networkmode = gnatsdbHasNetconn ();
+      networkmode = gnatsdbHasNetconn (nameOfDatabase);
     }
 
   if (networkmode)
Index: query-pr.c
===================================================================
RCS file: /cvsroot/gnats/gnats/gnats/query-pr.c,v
retrieving revision 1.44
diff -b -u -p -r1.44 query-pr.c
--- query-pr.c  31 Mar 2002 16:27:57 -0000      1.44
+++ query-pr.c  21 Oct 2002 22:44:46 -0000
@@ -615,7 +615,7 @@ main (int argc, char **argv)
 
   if (! is_network_client)
     {
-      is_network_client = gnatsdbHasNetconn ();
+      is_network_client = gnatsdbHasNetconn (nameOfDatabase);
     }
 
   if (printServerAddr)
Index: client.c
===================================================================
RCS file: /cvsroot/gnats/gnats/gnats/client.c,v
retrieving revision 1.43
diff -b -u -p -r1.43 client.c
--- client.c    14 Jul 2002 17:30:07 -0000      1.43
+++ client.c    21 Oct 2002 22:44:46 -0000
@@ -778,7 +778,7 @@ scanEnv (char **user, char **passwd, cha
         int *port, char **database)
 {
   char *vals[5];
-  char *evar = getenv ("GNATSDB");
+  char *evar = *database == NULL ? getenv ("GNATSDB") : *database;
   bool is_net_conn = databaseSpecIsNetConn (evar);
 
   if (evar == NULL || evar[0] == '\0' || is_net_conn)

reply via email to

[Prev in Thread] Current Thread [Next in Thread]