Date: Thu, 31 Jan 2002 17:27:22 -0500 From: Garance A Drosihn <drosih@rpi.edu> To: "Todd C. Miller" <Todd.Miller@courtesan.com>, "Perry E. Metzger" <perry@wasabisystems.com> Cc: "M. Warner Losh" <imp@village.org>, wes@softweyr.com, tlambert2@mindspring.com, asmodai@wxs.nl, mckusick@mckusick.com, arch@FreeBSD.ORG, peter@wemm.org, phk@critter.freebsd.dk, deatley@apple.com, jkh@winston.freebsd.org, deraadt@cvs.openbsd.org Subject: Re: __P macro question Message-ID: <p05101402b87f705dd790@[128.113.24.47]> In-Reply-To: <200201312043.g0VKhrDx004889@xerxes.courtesan.com> References: <20020131072933.GQ22384@daemon.ninth-circle.org> <3C58F78E.3F66EA8E@mindspring.com> <3C58FBEC.746257BB@softweyr.com> <20020131.085938.18394797.imp@village.org> <87d6zq31z6.fsf@snark.piermont.com> <200201312043.g0VKhrDx004889@xerxes.courtesan.com>
next in thread | previous in thread | raw e-mail | index | archive | help
At 1:43 PM -0700 1/31/02, Todd C. Miller wrote: >In message <87d6zq31z6.fsf@snark.piermont.com> > so spake "Perry E. Metzger" (perry): > >> If you do it by hand, we'll get source diffs by accident. If we build >> a quick set of scripts to do it, since we'll all be using the same >> scripts, we'll end up with fewer diffs. > >My inclination is to do the simple stuff programatically and do the >more complicated things by hand. A simple, dumb, ed script such >as the following is capable of changing the majority of things. It >doesn't attempt to deal with multi-line prototypes nor does it try >to convert prototypes that contain parens. These remaining things >can then be converted by hand. I believe Warner's plan for 'bin' is to both get rid of __P()'s, and to change routine declarations to be ANSI-style. The __P()'s are pretty easy to do with a script, but I think the declarations pretty much have to be done by hand. I may be using the wrong term there by saying 'declarations'... I mean the parameters as described at the start of the actual code for the routine. I did this to lpr a few months ago, and came across things like: static void scan_out(pp, scfd, scsp, dlm) struct printer *pp; int scfd, dlm; char *scsp; { Turning into: static void scan_out(struct printer *pp, int scfd, char *scsp, int dlm) { Ie, the parameters are specified in a different order for the parameter list than they are when listing their types. This would be hard to automate with any simple script... I also came across things like a prototype of: static int sendfile __P((struct printer *pp, int type, char *file, int format)); for a procedure declaration of: static int sendfile(pp, type, file, format) struct printer *pp; int type; char *file; char format; { (where the type for 'format' is different in the prototype than it is in the routine). In my case, I checked the end result of all my changes by using 'md5' on the object code, and either attempt to fix the above caused a change for the object code generated under Alpha. So when doing this to lpr, I started out thinking I would write some script to automate the conversion, but in the end I decided to do it all by hand just so I knew exactly what was going on... Note that I'm not doing any of the work for THIS drive to get rid of __P(), so everyone can safely ignore what I'm saying. As long as everyone else is happy with the plan, I have nothing to add. :-) -- Garance Alistair Drosehn = gad@eclipse.acs.rpi.edu Senior Systems Programmer or gad@freebsd.org Rensselaer Polytechnic Institute or drosih@rpi.edu To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-arch" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?p05101402b87f705dd790>