Warning: mysqli::__construct(): (HY000/1203): User howardkn already has more than 'max_user_connections' active connections in D:\Inetpub\vhosts\howardknight.net\al.howardknight.net\includes\artfuncs.php on line 21
Failed to connect to MySQL: (1203) User howardkn already has more than 'max_user_connections' active connections
Warning: mysqli::query(): Couldn't fetch mysqli in D:\Inetpub\vhosts\howardknight.net\al.howardknight.net\index.php on line 66
Article <87frtpznoa.fsf@nosuchdomain.example.com>
Deutsch   English   Français   Italiano  
<87frtpznoa.fsf@nosuchdomain.example.com>

View for Bookmarking (what is this?)
Look up another Usenet article

Path: ...!weretis.net!feeder8.news.weretis.net!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail
From: Keith Thompson <Keith.S.Thompson+u@gmail.com>
Newsgroups: comp.lang.c
Subject: Re: Running an editor from ANSI C
Date: Thu, 06 Jun 2024 15:55:33 -0700
Organization: None to speak of
Lines: 58
Message-ID: <87frtpznoa.fsf@nosuchdomain.example.com>
References: <v3pge7$uf2i$1@dont-email.me> <v3r2pl$16mtl$1@dont-email.me>
	<v3r7v8$1b57j$1@dont-email.me> <v3rek5$1c4i5$1@dont-email.me>
	<v3rrtm$1e6g8$1@dont-email.me> <v3ru84$1eafb$1@dont-email.me>
	<87o78dzw1a.fsf@nosuchdomain.example.com>
	<v3te2i$1ms1q$1@dont-email.me>
MIME-Version: 1.0
Content-Type: text/plain
Injection-Date: Fri, 07 Jun 2024 00:55:33 +0200 (CEST)
Injection-Info: dont-email.me; posting-host="3ec284f1a7e8071e4d0b56ae14cf643f";
	logging-data="1789942"; mail-complaints-to="abuse@eternal-september.org";	posting-account="U2FsdGVkX19OW+9f5KZPAPw4RbM4a0mt"
User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.2 (gnu/linux)
Cancel-Lock: sha1:W+vVhZZTr7GZU4MdE6xnRg6nblA=
	sha1:O24OPjSV8p14apKeTFTH314RJWc=
Bytes: 4136

Malcolm McLean <malcolm.arthur.mclean@gmail.com> writes:
> On 06/06/2024 20:54, Keith Thompson wrote:
>> David Brown <david.brown@hesbynett.no> writes:
>>> On 06/06/2024 10:27, Malcolm McLean wrote:
>>>> It does work. But my compiler warns about rmpnam() being deprecated.
>>>
>>> I presume you mean "tmpnam()" here.  No, it has not been deprecated -
>>> not even in C23.  I could be wrong, but this sounds like one of MSVC's
>>> arbitrary self-declared deprecations, using scare tactics to encourage
>>> people to use MSVC's own functions rather than standard C functions,
>>> thus locking you into their tools and platform.
>> [...]
>> You're right, tmpnam() is not deprecated either by ISO C or by
>> POSIX.
>> But tmpfile() is likely to be better for most purposes.  It creates
>> a
>> file and returns a FILE*.  tmpnam() returns a string pointer, and it's
>> possible that some other process could create a file with the same name
>> before the caller has a chance to create it.
>> (mkstemp() is more flexible, but is not defined by ISO C.)
>> 
> I want to run nano (or vi, or ed), in a shell running a pure ansi C
> program. So the way to do it is to create a file, write the text you
> want edit to it, them call system("nano readme.txt"). Nano then grabs 
> the  cobsole, which is what you want. You then read the file to get
> the edited data.
>
> The shell isn't just a proof og concept. It has a practical purpose,
> because it is FileSystem XML file editor. Whilst I'm playing about 
> putting Basic into it for fun, the real purpose is serious. And the
> user must have an easy way of editing text files in the FileSystem
> file.
>
> But it becomes effectively a virtual computer in its own right.

OK -- but that has nothing at all to do with my post, which was about
how to generate the temporary file name.

One suggestion: rather than always using nano (which not everyone is
familiar with), try reading the $EDITOR environment variable to
determine what editor to use.  Concatenating the value of
getenv("EDITOR"), followed by a space, followed by the file name, is
likely to give you a valid command you can pass to system().  Fall back
to nano if getenv("EDITOR") returns a null pointer.

(For historical reasons, the convention is to use $VISUAL if it's set,
otherwise $EDITOR if it's set, otherwise some default.  Originally
$VISUAL typically referred to a full-screen editor like vi and $EDITOR
to a line editor like ed, to be used when full-screen editing is not
available.  That's unlikely to be relevant nowadays, and users typically
either don't set $VISUAL or set it to the same thing as $EDITOR.)

Don't do this for me; I'm not likely to use this.  But others are likely
to find it more user-friendly if they can use a chosen editor.

-- 
Keith Thompson (The_Other_Keith) Keith.S.Thompson+u@gmail.com
void Void(void) { Void(); } /* The recursive call of the void */