Re: DOS program recording it's parameters and environment?

Frantisek Hanzlik <[email protected]>
Newsgroups org.kernel.vger.linux-msdos
Message-ID <[email protected]>
Dear Paul,

You are right, it works with Watcom C fine. And now I found in "Watcom C
Library Reference" manual paragraph:

environ
Prototype in <stdlib.h>.
This char ** __near data item is a pointer to an array of character
pointers to the environment strings.

which I not noticed before. Eeh, I still must learn to much!

Many thanks once again,
Franta

Paul Crawford napsal(a):
> Dear Frantisek,
>> compiler v1.9 (http://www.openwatcom.org/) for DOS. And there I knock
>> to problem - it seems as this compiler not support construction:
>>
>> int main(int argc, char *argv[], char *envp[])
> 
> I think this 3rd argument may be a MS-specific extension, as most C
> programs just have argc & argv in the call to main();
> 
> If you change to use the 'environ' variable, that should be pre-defined
> (probably in stdlib.h) and should do the same job. Attached is an
> example that seems to compile & work under C6 DOS compiler and with gcc
> on my Ubuntu 10.04 box.
> 
> Regards,
> Paul
> 
> 
> dosenv.c
> 
> 
> 
> 
> #include <stdio.h>
> #include <stdlib.h>
> 
> extern char **environ;
> 
> int main(int argc, char *argv[])
> {
> int ii;
> FILE *fp;
> char **envp = environ;
> 
> 
> 	fp=fopen("dosenv.txt", "wb");
> 	if(fp != NULL)
> 		{
> 		fprintf(fp, "argc = %d\n", argc);
> 
> 		for(ii=0; ii<argc; ii++)
> 			{
> 			fprintf(fp, "argv[%d] = %s\n", ii, argv[ii]);
> 			}
> 
> 		ii=0;
> 		while(envp != NULL && envp[ii] != NULL)
> 			{
> 			fprintf(fp, "envp[%d] = %s\n", ii, envp[ii]);
> 			ii++;
> 			}
> 
> 		fclose(fp);
> 		}
> 
> 
> return 0;
> }
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.