On Tue, Aug 26, 2025 at 06:46:07PM -0400, Thomas Dickey wrote:
> On Tue, Aug 26, 2025 at 07:07:57PM +0200, наб wrote:
> > Package: cproto
> > Version: 4.7x-1
> > Severity: normal
> > 
> > Dear Maintainer,
> > 
> > I'm trying to work around some explosive source code (src:tgif 1:4.2.5-2)
> > with something like
> >   cproto -E 'cpp' -D'ARGS_DECL(...)=__VA_ARGS__' -{P,F,C}"int f(a, b)" -a 
> > exec.c
> > 
> > Quoth cproto(1):
> >   -E cpp Pipe the input files through the specified C preprocessor command 
> >          when generating prototypes.  By default, the program uses /lib/cpp.
> 
> ...actually the manpage could be improved, to show the actual compiled-in
> default.
> 
> >   -E 0   Do not run the C preprocessor.
> > 
> > This doesn't appear to hold at all. /lib/cpp isn't a valid preprocessor,
> > but even supplying -E cpp or -E /bin/cpp I see no preprocessing happen
> > (and don't see an execve() in strace at all).
> 
> cproto's using popen.
> 
> (I agree, it should re-escape/re-quote parameters -- it seems that noone's
> recently bit on this).

Actually, it does quote parameters.  The problem is the -a option,
which isn't readily addressed.  If cproto is told to use the -a or -t
options, it works only for the unpreprocessed source.  But since
cproto has only a very limited ability to handle preprocess-related
stuff, it cannot find the header files, nor can it expand macros by
itself.

I'll document this in the manpage.

> > It looks like -E working at all is guarded on #ifdef CPP?
> > It would be nice, for future readers, to say "-E ... ignored",
> 
> these two lines are unclear
> 
> > if this is intended.
> > 
> > Best,
> > 
> > -- System Information:
> > Debian Release: 12.11
> >   APT prefers stable-updates
> >   APT policy: (500, 'stable-updates'), (500, 'stable-security'), (500, 
> > 'stable-debug'), (500, 'stable')
> > Architecture: amd64 (x86_64)
> > Foreign Architectures: i386
> > 
> > Kernel: Linux 6.1.0-35-amd64 (SMP w/24 CPU threads; PREEMPT)
> > Kernel taint flags: TAINT_PROPRIETARY_MODULE, TAINT_FIRMWARE_WORKAROUND, 
> > TAINT_OOT_MODULE, TAINT_UNSIGNED_MODULE
> > Locale: LANG=en_GB.UTF-8, LC_CTYPE=en_GB.UTF-8 (charmap=UTF-8), 
> > LANGUAGE=en_GB:en
> > Shell: /bin/sh linked to /usr/bin/dash
> > Init: systemd (via /run/systemd/system)
> > LSM: AppArmor: enabled
> > 
> > Versions of packages cproto depends on:
> > ii  gcc    4:12.2.0-3
> > ii  libc6  2.36-9+deb12u10
> > 
> > cproto recommends no packages.
> > 
> > cproto suggests no packages.
> > 
> > -- no debconf information
> 
> 
> 
> -- 
> Thomas E. Dickey <[email protected]>
> https://invisible-island.net



-- 
Thomas E. Dickey <[email protected]>
https://invisible-island.net

Attachment: signature.asc
Description: PGP signature

Reply via email to