* Re: help with sys_stat
2006-01-28 15:01 help with sys_stat Niel A
@ 2006-01-28 10:41 ` Frank Kotler
0 siblings, 0 replies; 2+ messages in thread
From: Frank Kotler @ 2006-01-28 10:41 UTC (permalink / raw)
To: Niel A; +Cc: linux-assembly@vger.kernel.org
Niel A wrote:
> hey guys! it's me again (with another useless program! hehehehe)
They're *all* useless... until you put the pieces together to do
something useful. (This is on my to-do list...)
> actually.. i have two problems.. how to use struc in nasm.. and how to determine if a file is a directory...
>
> i'm totally clueless about this .. so i used struc straightforward in segment. bss based on struct stat in /usr/include/asm/stat.h
>
> segment .bss
> struc stat
This can go anywhere - like a "%define", it doesn't generate any code.
It's a "typedef". An instance of your struc would want to go in .data,
if it's initialized, or in .bss if you just want to reserve space for it
(this case, I think)... If you "%include 'system.inc'" from asmutils,
you've *got* the "typedef"...
my_stat_buf resb stat_size
> .st_dev resw 1
> -- snip --
... .??? resw 1
... .??? resd 1
... .st_mode resw 1 ; <- this one!
> endstruc
>
> ? but somehow, i think that i should make a struc somewhere at the beginning .. like a prototype of some sort and use it's name in segment .bss intead.
You probably want both. The "typedef" anyplace, and an instance in .bss.
> so far, i have a filename in edi and i call stat like ..
> mov eax, 106 ; stat
> mov ebx, edi ; file
> mov ecx, stat
This may be a problem. You want some memory (stat_size bytes) to point
this at. Just "struc" doesn't allocate memory - you'd want "istruc", or
"stat_size" reserved in .bss, or just subtract it from esp...
> int 80h
>
> any suggestions on this one ? i'm reading asmutil's "rm" alongside making my own program.. but i'm only interested in determining if a given filename is a directory or not. do i also have to deal with trailing slashes in directory names??
I think not. Once you've got the buffer filled, you can just test "mybuf
+ stat.st_mode" for the directory bit. Note that C gives these in
octal!!! "NNNNq" for nasm...
This is pretty crude...
mov eax, 106 ; sys_stat
lea ebx, [edi + 10] ; filename
sub esp, 64 ; stat_size
mov ecx, esp
int 80h
test dword [ecx + 8], 40000q
jz notsubdir
...
(don't forget to add stat_size back onto the stack to "free" the buffer,
if you do it this way!)
Soon, we'll tackle some "time" functions and figure out what in hell
timezone you're in :)
Best,
Frank
^ permalink raw reply [flat|nested] 2+ messages in thread
* help with sys_stat
@ 2006-01-28 15:01 Niel A
2006-01-28 10:41 ` Frank Kotler
0 siblings, 1 reply; 2+ messages in thread
From: Niel A @ 2006-01-28 15:01 UTC (permalink / raw)
To: linux-assembly@vger.kernel.org
hey guys! it's me again (with another useless program! hehehehe)
actually.. i have two problems.. how to use struc in nasm.. and how to determine if a file is a directory...
i'm totally clueless about this .. so i used struc straightforward in segment. bss based on struct stat in /usr/include/asm/stat.h
segment .bss
struc stat
.st_dev resw 1
-- snip --
endstruc
? but somehow, i think that i should make a struc somewhere at the beginning .. like a prototype of some sort and use it's name in segment .bss intead.
so far, i have a filename in edi and i call stat like ..
mov eax, 106 ; stat
mov ebx, edi ; file
mov ecx, stat
int 80h
any suggestions on this one ? i'm reading asmutil's "rm" alongside making my own program.. but i'm only interested in determining if a given filename is a directory or not. do i also have to deal with trailing slashes in directory names??
tidings,
- niel
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2006-01-28 15:01 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-01-28 15:01 help with sys_stat Niel A
2006-01-28 10:41 ` Frank Kotler
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).