[prev in list] [next in list] [prev in thread] [next in thread] 

List:       freebsd-bugs
Subject:    kern/165559: ufsmount.h uses the 'export' keyword as a structure member name
From:       "Jim C." <jim () carroll ! com>
Date:       2012-02-29 17:46:37
Message-ID: 201202291746.q1THkbc6044907 () red ! freebsd ! org
[Download RAW message or body]


> Number:         165559
> Category:       kern
> Synopsis:       ufsmount.h uses the 'export' keyword as a structure member name
> Confidential:   no
> Severity:       non-critical
> Priority:       low
> Responsible:    freebsd-bugs
> State:          open
> Quarter:        
> Keywords:       
> Date-Required:
> Class:          change-request
> Submitter-Id:   current-users
> Arrival-Date:   Wed Feb 29 17:50:11 UTC 2012
> Closed-Date:
> Last-Modified:
> Originator:     Jim C.
> Release:        8.2-RELEASE-p4
> Organization:
Carroll-Net, Inc.
> Environment:
FreeBSD bv601.hck.carroll.com 8.2-RELEASE-p4 FreeBSD 8.2-RELEASE-p4 #0: Fri Nov 18 \
15:50:11 EST 2011


> Description:
While compiling some GNU C++ code against the include file \
/usr/include/ufs/ufs/ufsmount.h, we discovered the ufs_args structure has a member \
variable named 'export'. G++ chokes with the following error:

/usr/include/ufs/ufs/ufsmount.h:43: error: expected unqualified-id before 'export'

The reason is that the term 'export' is a reserved, but presently unused keyword in \
the C++ language.

To solve our problem, we've copied the header locally to our project folder, and \
renamed the reference. But if possible, I was hoping this could be folded back into \
the main tree.

I recognize this could present a breaking change for any projects that link against \
libufs -- but sooner or later this change will need to be accepted or someone is \
going to have to convince the folks at GNU/C++ to add a compiler directive to ignore \
the 'export' keyword (fyi -- I checked, but so far this looks like a no go).

FYI -- the folks at the openssl project encountered had a similar problem and \
eventually they were forced to just rename the member variable.
> How-To-Repeat:
Create my.cpp, paste in

    #include <sys/param.h>
    #include <sys/mount.h>
    #include <ufs/ufs/ufsmount.h>
    #include <ufs/ufs/dinode.h>
    #include <ufs/ffs/fs.h>
    #include <libufs.h>

g++ -c my.cpp
~
~

> Fix:
--- ufsmount.h	2012-02-29 12:33:04.000000000 -0500
+++ /usr/include/ufs/ufs/ufsmount.h	2012-02-29 12:32:28.000000000 -0500
@@ -40,7 +40,7 @@
  */
 struct ufs_args {
 	char	*fspec;			/* block special device to mount */
-	struct	oexport_args export_;	/* network export information */
+	struct	oexport_args export;	/* network export information */
 };
 
 #ifdef _KERNEL


> Release-Note:
> Audit-Trail:
> Unformatted:
_______________________________________________
freebsd-bugs@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-bugs
To unsubscribe, send any mail to "freebsd-bugs-unsubscribe@freebsd.org"


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic