From owner-freebsd-questions@FreeBSD.ORG Sun Apr 4 13:12:39 2004 Return-Path: Delivered-To: freebsd-questions@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 13B0C16A4CE for ; Sun, 4 Apr 2004 13:12:39 -0700 (PDT) Received: from mailout1.informatik.tu-muenchen.de (mailout1.informatik.tu-muenchen.de [131.159.0.18]) by mx1.FreeBSD.org (Postfix) with ESMTP id CD9C343D39 for ; Sun, 4 Apr 2004 13:12:38 -0700 (PDT) (envelope-from barner@in.tum.de) Received: by zi025.glhnet.mhn.de (Postfix, from userid 1000) id 1AF943EF3; Sun, 4 Apr 2004 22:08:17 +0200 (CEST) Date: Sun, 4 Apr 2004 22:08:16 +0200 From: Simon Barner To: Darryl Hoar Message-ID: <20040404200816.GB44569@zi025.glhnet.mhn.de> References: <008b01c418f2$43ecef50$0701a8c0@darryl> Mime-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="lCAWRPmW1mITcIfM" Content-Disposition: inline In-Reply-To: <008b01c418f2$43ecef50$0701a8c0@darryl> User-Agent: Mutt/1.5.6i X-Virus-Scanned: by amavisd-new at informatik.tu-muenchen.de cc: freebsd-questions@freebsd.org Subject: Re: Samba Question X-BeenThere: freebsd-questions@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: User questions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 04 Apr 2004 20:12:39 -0000 --lCAWRPmW1mITcIfM Content-Type: multipart/mixed; boundary="tjCHc7DPkfUGtrlw" Content-Disposition: inline --tjCHc7DPkfUGtrlw Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Darryl Hoar wrote: > I have Samba installed on a Freebsd 5.1 server. > I am trying to map a share from a windows machine > so that I can copy the data. I can not change the > windows share name. It has a space in it. How > do I specify the share name in fstab. >=20 > share name: PSR COMPLETE >=20 > //user@mymachine/PSR COMPLETE /psrcomplete smbfs ro,noauto 0 0 >=20 > doesn't work. Can't use quote marks Hi, I once had the same problem, and I came up with the following patch: http://www.freebsd.org/cgi/query-pr.cgi?pr=3Dbin/55539 (I have attached version of the patch that applies to FreeBSD 5.2.1, otherwise please use the very last version of it (at the bottom of the problem report page). The following instructions assume that you have the system sources in /usr/src # cd /usr/src # patch < /path/to/fstab-vis.patch Now either do a full buildworld cycle, or use the following commands (untested): # cd /usr/src/lib/libc # make depend && make && make install clean # cd /usr/src/share/man/man5 # make depend && make && make install clean Now you can encode the spaces with the vis(1) utility: vis -w See also the updated fstab(5) man page. If you try this patch, please tell me, whether it works for you, perhaps someday I can get it committed. Regards, Simon --tjCHc7DPkfUGtrlw Content-Type: text/plain; charset=us-ascii Content-Disposition: attachment; filename="fstab-vis.patch" Content-Transfer-Encoding: quoted-printable --- lib/libc/gen/fstab.c.orig Mon Apr 7 14:55:00 2003 +++ lib/libc/gen/fstab.c Sun Apr 4 21:45:30 2004 @@ -49,6 +49,7 @@ #include #include #include +#include #include "un-namespace.h" =20 static FILE *_fs_fp; @@ -110,6 +111,41 @@ _fs_fstab.fs_spec =3D buf; } =20 +/* + * Converts a string *str, that possibly contains vis(1|3) encoded + * characters (visual representation) into the original form. + * See also: unvis(1|3) + * + * Return values: 0 on success, 1 otherwise + */ +int unescape (char *str) { + int state =3D 0; + char out, *s =3D str, *t =3D str; + + if (str =3D=3D NULL) + return 1; + + while (*s !=3D '\0') { + again: + switch(unvis(&out, *s, &state, 0)) { + case 0: + case UNVIS_NOCHAR: + break; + case UNVIS_VALID: + *t++ =3D out; + break; + case UNVIS_VALIDPUSH: + *t++ =3D out; + goto again; + case UNVIS_SYNBAD: + return 1; + } + ++s; + } + *t =3D '\0'; + return 0; +} + static int fstabscan() { @@ -128,9 +164,19 @@ if (*line =3D=3D '#' || *line =3D=3D '\n') continue; if (!strpbrk(p, " \t")) { - _fs_fstab.fs_spec =3D strsep(&p, ":\n"); - _fs_fstab.fs_file =3D strsep(&p, ":\n"); + cp =3D strsep(&p, ":\n"); + if (!unescape (cp)) + _fs_fstab.fs_spec =3D cp; + else + goto bad; + =09 + cp =3D strsep(&p, ":\n"); + if (!unescape (cp)) + _fs_fstab.fs_file =3D cp; + else + goto bad; fixfsfile(); + =09 _fs_fstab.fs_type =3D strsep(&p, ":\n"); if (_fs_fstab.fs_type) { if (!strcmp(_fs_fstab.fs_type, FSTAB_XX)) @@ -152,13 +198,21 @@ /* OLD_STYLE_FSTAB */ while ((cp =3D strsep(&p, " \t\n")) !=3D NULL && *cp =3D=3D '\0') ; - _fs_fstab.fs_spec =3D cp; + if (!unescape (cp)) + _fs_fstab.fs_spec =3D cp; + else + goto bad; if (!_fs_fstab.fs_spec || *_fs_fstab.fs_spec =3D=3D '#') continue; + =09 while ((cp =3D strsep(&p, " \t\n")) !=3D NULL && *cp =3D=3D '\0') ; - _fs_fstab.fs_file =3D cp; + if (!unescape (cp)) + _fs_fstab.fs_file =3D cp; + else + goto bad; fixfsfile(); + =09 while ((cp =3D strsep(&p, " \t\n")) !=3D NULL && *cp =3D=3D '\0') ; _fs_fstab.fs_vfstype =3D cp; --- share/man/man5/fstab.5.orig Thu Dec 12 18:25:57 2002 +++ share/man/man5/fstab.5 Sun Apr 4 21:46:35 2004 @@ -10,7 +10,7 @@ .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" 3. All advertising materials mentioning features or use of this softwa= re -.\" must display the following acknowledgement: +.\" must display the following acknowledgment: .\" This product includes software developed by the University of .\" California, Berkeley and its contributors. .\" 4. Neither the name of the University nor the names of its contributors @@ -78,6 +78,19 @@ .Pq Fa fs_file , describes the mount point for the file system. For swap partitions, this field should be specified as ``none''. +.Pp +Both the +.Fa fs_spec +and the +.Fa fs_file +field may contain white spaces, that must be encoded in a +.Xr vis 1 compatible way (you can run ``vis -wc'' or ``vis -w'' to +encode the path names properly). +Despite this ability to handle path names with with spaces, system +administrators should avoid them wherever possible in order to keep +file system and mount point specifications simple and clean. +It is only only intended to provide compatibility with systems, +where white spaces in path names are common (mostly SMB/CIFS shares). .Pp The third field, .Pq Fa fs_vfstype , --tjCHc7DPkfUGtrlw-- --lCAWRPmW1mITcIfM Content-Type: application/pgp-signature; name="signature.asc" Content-Description: Digital signature Content-Disposition: inline -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.4 (FreeBSD) iD8DBQFAcGswCkn+/eutqCoRAiA+AKC+4E+PfjP4RXpd0XzA2jo6cJ9mLwCfdZez k7YIkDnlAY8pi/ISquuzXEg= =kvmj -----END PGP SIGNATURE----- --lCAWRPmW1mITcIfM--