summaryrefslogtreecommitdiff
path: root/usr/src/lib/libsmbfs/smb/cfopt.c
diff options
context:
space:
mode:
authorGordon Ross <Gordon.Ross@Sun.COM>2009-07-02 12:58:38 -0400
committerGordon Ross <Gordon.Ross@Sun.COM>2009-07-02 12:58:38 -0400
commit613a2f6ba31e891e3d947a356daf5e563d43c1ce (patch)
tree0f7f3438a5792c05ed156a43e8cd84f25695d7f2 /usr/src/lib/libsmbfs/smb/cfopt.c
parentbf73eaa5a8ea69ac16a1e6e7b736f09286d073f9 (diff)
downloadillumos-joyent-613a2f6ba31e891e3d947a356daf5e563d43c1ce.tar.gz
6584198 SMB Client needs authentication improvements
6587713 Need to reconnect after server disconnect --HG-- rename : usr/src/lib/libsmbfs/netsmb/smbfs_isec.h => usr/src/lib/libsmbfs/smb/acl_nt.h
Diffstat (limited to 'usr/src/lib/libsmbfs/smb/cfopt.c')
-rw-r--r--usr/src/lib/libsmbfs/smb/cfopt.c25
1 files changed, 21 insertions, 4 deletions
diff --git a/usr/src/lib/libsmbfs/smb/cfopt.c b/usr/src/lib/libsmbfs/smb/cfopt.c
index 094682f6d8..3b2672b2cd 100644
--- a/usr/src/lib/libsmbfs/smb/cfopt.c
+++ b/usr/src/lib/libsmbfs/smb/cfopt.c
@@ -32,16 +32,19 @@
* $Id: cfopt.c,v 1.1.1.1 2001/06/09 00:28:12 zarzycki Exp $
*/
-#pragma ident "%Z%%M% %I% %E% SMI"
-
-#include <sys/param.h>
+#include <sys/types.h>
#include <stdio.h>
#include <string.h>
+#include <synch.h>
#include <libintl.h>
#include <cflib.h>
#include <netsmb/smb_lib.h>
+#include <assert.h>
+
+/* lock for the variables below */
+mutex_t cf_opt_mutex = DEFAULTMUTEX;
int cf_opterr = 1, /* if error message should be printed */
cf_optind = 1, /* index into parent argv vector */
@@ -53,6 +56,18 @@ const char *cf_optarg; /* argument associated with option */
#define BADARG (int)':'
#define EMSG ""
+void
+cf_opt_lock(void)
+{
+ mutex_lock(&cf_opt_mutex);
+}
+
+void
+cf_opt_unlock(void)
+{
+ mutex_unlock(&cf_opt_mutex);
+}
+
int
cf_getopt(nargc, nargv, ostr)
int nargc;
@@ -63,10 +78,12 @@ cf_getopt(nargc, nargv, ostr)
char *oli; /* option letter list index */
int tmpind;
+ assert(MUTEX_HELD(&cf_opt_mutex));
+
if (cf_optreset || !*place) { /* update scanning pointer */
cf_optreset = 0;
tmpind = cf_optind;
- while (1) {
+ for (;;) {
if (tmpind >= nargc) {
place = EMSG;
return (-1);