Re: Fine, let's see you using pathconf(3) on Windows (was: Re: Then there's PATH_MAX)

Liste des GroupesRevenir à col advocacy 
Sujet : Re: Fine, let's see you using pathconf(3) on Windows (was: Re: Then there's PATH_MAX)
De : vallor (at) *nospam* cultnix.org (vallor)
Groupes : comp.os.linux.advocacy
Date : 10. Dec 2024, 16:13:40
Autres entêtes
Message-ID : <lrr454F1u8jU1@mid.individual.net>
References : 1 2 3 4
User-Agent : Pan/0.161 (Hmm2; be402cc9; Linux-6.12.4)
On Tue, 10 Dec 2024 14:44:12 +0000, Farley Flud <fsquared@fsquared.linux>
wrote in <180fd7fa66284739$61502$1728$802601b3@news.usenetexpress.com>:

On Tue, 10 Dec 2024 13:58:17 +0000, vallor wrote:
 
 
 - - cut here %<- - -
>
>
Should be "flush here."
 
 
 
if(argv[1])
    {
    path = argv[1];
    }
    }
 
 
WTF!
 
You check for arguments like this:
 
if(argc != 2)
 
or:
 
if(argv[1] == NULL)
 
 
 
    else {
    path = "/";
>
>
WTF!
 
You are assigning a pointer with the value 0x2F.
 
If it's then passed to pathconf() then KABOOM!
 
 
 
printf("%d\n",result);
 
 
"result" is an int.  pathcomp() returns a long int.
 
You should either have declared "result" as a long int or:
 
result = (int)pathconf(path,_PC_PATH_MAX)
 
 
 
Congrats.  In a few short lines you have created a huge mess.

Thank you for your feedback.  I have modified my program:

$ diff -u use_pathconf.c~ use_pathconf.c
--- use_pathconf.c~ 2024-12-10 05:52:19.000000000 -0800
+++ use_pathconf.c 2024-12-10 06:57:40.671592496 -0800
@@ -4,7 +4,7 @@
 
 int main(int argc, char * argv[], char * envp[])
 {
-int result = 0;
+long result = 0;
 char * path;
 
 if(argv[1])
@@ -23,7 +23,7 @@
     perror("pathconf() returned -1:");
     return 1;
     }
-printf("%d\n",result);
+printf("%ld\n",result);
 
 return 0;
 }

That's the only valid criticism I see -- but I do see that
you are not as familiar with C as you claim to be.  (Please review
your knowledge of pointers to string literals before you embarrass yourself
further.)

CC=tcc
CFLAGS=-g -O2 -std=c90 -Wall -Werror -pedantic

Although I'm not sure if tcc supports -Wall -Werror, so
just tried:

gcc -g -O2 -std=c90 -Wall -Werror -pedantic    use_pathconf.c   -o use_pathconf

Nope, no errors.

$ gdb use_pathconf
(gdb) break 19
Breakpoint 1 at 0x10d7: file use_pathconf.c, line 19.
(gdb) run
Starting program: /nfs/ds/src/vallor/path_max/use_pathconf
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".

Breakpoint 1, main (argc=1, argv=0x7fffffffe1d8, envp=0x7fffffffe1e8) at use_pathconf.c:19
19 errno = 0;
(gdb) print path
$1 = 0x555555556004 "/"
(gdb) print *path
$2 = 47 '/'
(gdb) print *(path+1)
$4 = 0 '\000'
(gdb) print "happy?"
$5 = "happy?"

Meanwhile, I still haven't seen your program that would run
on Windows.

What's the matter Colonel Sanders ... chicken?

--
-v System76 Thelio Mega v1.1 x86_64 NVIDIA RTX 3090 Ti
   OS: Linux 6.12.4 Release: Mint 21.3 Mem: 258G
   "Any closet is a walk-in closet if you try hard enough."

Date Sujet#  Auteur
9 Dec 24 * Then there's PATH_MAX13vallor
9 Dec 24 +- Re: Then there's PATH_MAX1Chris Ahlstrom
10 Dec 24 +* Re: Then there's PATH_MAX5DFS
10 Dec 24 i`* Re: Then there's PATH_MAX4Lawrence D'Oliveiro
10 Dec 24 i +- Re: Then there's PATH_MAX1vallor
10 Dec 24 i +- Re: Then there's PATH_MAX1Chris Ahlstrom
11 Dec 24 i `- Re: Then there's PATH_MAX1DFS
10 Dec 24 `* Re: Then there's PATH_MAX6Farley Flud
10 Dec 24  +- Re: Then there's PATH_MAX1Chris Ahlstrom
10 Dec 24  `* Fine, let's see you using pathconf(3) on Windows (was: Re: Then there's PATH_MAX)4vallor
10 Dec 24   `* Re: Fine, let's see you using pathconf(3) on Windows (was: Re: Then there's PATH_MAX)3Farley Flud
10 Dec 24    `* Re: Fine, let's see you using pathconf(3) on Windows (was: Re: Then there's PATH_MAX)2vallor
11 Dec 24     `- Re: Fine, let's see you using pathconf(3) on Windows (was: Re: Then there's PATH_MAX)1vallor

Haut de la page

Les messages affichés proviennent d'usenet.

NewsPortal