Source-Changes-D archive

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

Re: CVS commit: src/sys



>>> Takeshi Nakayama <tn%catvmics.ne.jp@localhost> wrote

> >>> Justin Cormack <justin%specialbusservice.com@localhost> wrote
> 
> > Er, you can't do that.
> > 
> > 1. It breaks the rump builds on most platforms
> > http://build.myriabit.eu:8012/waterfall as the prototypes dont match
> > eg see http://build.myriabit.eu:8012/builders/ppc64-cross/builds/5585/steps/shell_3/logs/stdio
> 
> It seems that posix says 2nd arg of iconv(3) is char **, but
> NetBSD's one is const char **.
> 
> > 2. There is no requirement that rump runs on a platform that has iconv
> > anyway, it may be running on bare metal, or non Posix platform.
> > 
> > Not sure what the intention was though - I am sure we can find a way
> > around it...
> 
> I would like to include this at least on NetBSD host since we don't
> have kernel iconv and then mount_smbfs(8) is useless for filename
> conversions.
> 
> So is it ok to add a compile-time option as below and define it
> somewhere?  Or are there any more appropriate make variables to
> detect host OS?

On second thought, it seems user component can use __NetBSD__
definition, how about this change?

-- Takeshi Nakayama


Index: netsmb_user.c
===================================================================
RCS file: /cvsroot/src/sys/rump/dev/lib/libnetsmb/netsmb_user.c,v
retrieving revision 1.1
diff -u -d -r1.1 netsmb_user.c
--- netsmb_user.c	15 Nov 2014 18:49:04 -0000	1.1
+++ netsmb_user.c	16 Nov 2014 00:21:28 -0000
@@ -36,6 +36,7 @@
 int
 rumpcomp_netsmb_iconv_open(const char *to, const char *from, void **handle)
 {
+#ifdef __NetBSD__
 	iconv_t cd;
 	int rv;
 
@@ -49,11 +50,16 @@
 	}
 
 	return rumpuser_component_errtrans(rv);
+#else
+	/* fallback to use stub functions */
+	return 0;
+#endif
 }
 
 int
 rumpcomp_netsmb_iconv_close(void *handle)
 {
+#ifdef __NetBSD__
 	int rv;
 
 	if (iconv_close((iconv_t)handle) == -1)
@@ -62,12 +68,17 @@
 		rv = 0;
 
 	return rumpuser_component_errtrans(rv);
+#else
+	/* do nothing */
+	return 0;
+#endif
 }
 
 int
 rumpcomp_netsmb_iconv_conv(void *handle, const char **inbuf,
     size_t *inbytesleft, char **outbuf, size_t *outbytesleft)
 {
+#ifdef __NetBSD__
 	int rv;
 
 	if (iconv((iconv_t)handle, inbuf, inbytesleft, outbuf, outbytesleft)
@@ -77,5 +88,9 @@
 		rv = 0;
 
 	return rumpuser_component_errtrans(rv);
+#else
+	/* do nothing */
+	return 0;
+#endif
 }
 #endif


Home | Main Index | Thread Index | Old Index