[master] 9d1986f92 Simplify VIN_n_Arg() to return the directory directly.

Poul-Henning Kamp phk at FreeBSD.org
Tue Aug 24 12:51:05 UTC 2021


commit 9d1986f92c6efccec7e3b8705026088c30f2f166
Author: Poul-Henning Kamp <phk at FreeBSD.org>
Date:   Tue Aug 24 12:49:37 2021 +0000

    Simplify VIN_n_Arg() to return the directory directly.

diff --git a/bin/varnishd/mgt/mgt_main.c b/bin/varnishd/mgt/mgt_main.c
index 9c2a8f0ef..f5d2ede33 100644
--- a/bin/varnishd/mgt/mgt_main.c
+++ b/bin/varnishd/mgt/mgt_main.c
@@ -782,8 +782,8 @@ main(int argc, char * const *argv)
 		VJ_master(JAIL_MASTER_LOW);
 	}
 
-	if (VIN_n_Arg(n_arg, &workdir) != 0)
-		ARGV_ERR("Invalid instance (-n) name: %s\n", VAS_errtxt(errno));
+	workdir = VIN_n_Arg(n_arg);
+	AN(workdir);
 
 	if (i_arg == NULL || *i_arg == '\0')
 		i_arg = mgt_HostName();
diff --git a/include/vin.h b/include/vin.h
index 373dda0e1..e7dc3eb8d 100644
--- a/include/vin.h
+++ b/include/vin.h
@@ -34,5 +34,5 @@
 #define VIN_H_INCLUDED
 
 /* This function lives in both libvarnish and libvarnishapi */
-int VIN_n_Arg(const char *n_arg, char **dir);
+char *VIN_n_Arg(const char *n_arg);
 #endif
diff --git a/include/vrt.h b/include/vrt.h
index d65c19984..24d11fd10 100644
--- a/include/vrt.h
+++ b/include/vrt.h
@@ -54,6 +54,7 @@
  * binary/load-time compatible, increment MAJOR version
  *
  * NEXT (2021-09-15)
+ *	VIN_n_Arg() no directly returns the directory name.
  *	VSB_new() and VSB_delete() removed
  *	VCL_STRINGLIST, vrt_magic_string_end removed
  *	VRT_String(), VRT_StringList(), VRT_CollectString() removed
diff --git a/lib/libvarnish/vin.c b/lib/libvarnish/vin.c
index 493486f8d..89f132f4e 100644
--- a/lib/libvarnish/vin.c
+++ b/lib/libvarnish/vin.c
@@ -42,12 +42,11 @@
 #include "vin.h"
 #include "vsb.h"
 
-int
-VIN_n_Arg(const char *n_arg, char **dir)
+char *
+VIN_n_Arg(const char *n_arg)
 {
 	struct vsb *vsb;
-
-	AN(dir);
+	char *retval;
 
 	vsb = VSB_new_auto();
 	AN(vsb);
@@ -63,9 +62,7 @@ VIN_n_Arg(const char *n_arg, char **dir)
 	}
 	AZ(VSB_finish(vsb));
 
-	*dir = strdup(VSB_data(vsb));
+	retval = strdup(VSB_data(vsb));
 	VSB_destroy(&vsb);
-	if (*dir == NULL)
-		return (-1);
-	return (0);
+	return (retval);
 }
diff --git a/lib/libvarnishapi/vsm.c b/lib/libvarnishapi/vsm.c
index 0040e85c8..af1b3b212 100644
--- a/lib/libvarnishapi/vsm.c
+++ b/lib/libvarnishapi/vsm.c
@@ -387,12 +387,12 @@ VSM_Arg(struct vsm *vd, char flag, const char *arg)
 		}
 		break;
 	case 'n':
-		if (VIN_n_Arg(arg, &p))
+		if (vd->wdname != NULL)
+			free(vd->wdname);
+		vd->wdname = VIN_n_Arg(arg);
+		if (vd->wdname == NULL)
 			return (vsm_diag(vd, "Invalid instance name: %s",
 			    strerror(errno)));
-		AN(p);
-		REPLACE(vd->wdname, p);
-		free(p);
 		break;
 	default:
 		return (vsm_diag(vd, "Unknown VSM_Arg('%c')", flag));


More information about the varnish-commit mailing list