1. File handling

Has anyone done routines for deleting, renaming, copying, moving, and
creating temporary files?

I'd never realized Euphoria didn't bring this ?!

Rob, why don't you include these standard C functions on next release
(there're at io.h, stdio.h, dir.h):

    access    chmod    chsize    lock
    unlock     mktemp  remove  rename
    mkdir       rmdir

new topic     » topic index » view message » categorize

2. Re: File handling

Daniel Berstein wrote:
>
> Has anyone done routines for deleting, renaming, copying, moving, and
> creating temporary files?
>
> I'd never realized Euphoria didn't bring this ?!
>
> Rob, why don't you include these standard C functions on next release
> (there're at io.h, stdio.h, dir.h):
>
>     access    chmod    chsize    lock
>     unlock     mktemp  remove  rename
>     mkdir       rmdir



did you take a look at the system command? you get access to all of
DOS's
functions that way...also, unless i miss my guess, those commands above
are a variant of some sort of UNIX...no? if so, then (to my knowledge)
Euphoria doesn't support UNIX variants yet...

hope this helps (HTH-- my contribution to the initial clutter for this
week :) )
--mike

new topic     » goto parent     » topic index » view message » categorize

3. Re: File handling

At 08:05 PM 6/6/98 -0300, you wrote:
>Has anyone done routines for deleting, renaming, copying, moving, and
>creating temporary files?
>
>I'd never realized Euphoria didn't bring this ?!
>
>Rob, why don't you include these standard C functions on next release
>(there're at io.h, stdio.h, dir.h):
>
>    access    chmod    chsize    lock
>    unlock     mktemp  remove  rename
>    mkdir       rmdir
>
How about system(delete, rename, mkdir, rmdir, attrib)?

The file/record lockings are available via an interrupt,
so a Euphoria include file could be written to call
the interrupt, if there was any interest. How many people are
runnng Euphoria on shared data?

Irv

new topic     » goto parent     » topic index » view message » categorize

4. Re: File handling

-----Original Message-----
De: mountains at MINDSPRING.COM <mountains at MINDSPRING.COM>
Para: EUPHORIA at cwisserver1.mcs.muohio.edu
<EUPHORIA at cwisserver1.mcs.muohio.edu>
Fecha: domingo 7 de junio de 1998 0:23
Asunto: Re: File handling


>The file/record lockings are available via an interrupt,
>so a Euphoria include file could be written to call
>the interrupt, if there was any interest. How many people are
>runnng Euphoria on shared data?


I don't need currently file locking... but who know in the near future? It's
easy to implement... so why don't put it? That means: Rob you have homework.

Regards,
    Daniel   Berstein
    daber at pair.com

new topic     » goto parent     » topic index » view message » categorize

5. Re: File handling

-----Original Message-----
De: Hawke <mdeland at NWINFO.NET>
Para: EUPHORIA at cwisserver1.mcs.muohio.edu
<EUPHORIA at cwisserver1.mcs.muohio.edu>
Fecha: sábado 6 de junio de 1998 23:23
Asunto: Re: File handling


>Daniel Berstein wrote:
>>
>> Has anyone done routines for deleting, renaming, copying, moving, and
>> creating temporary files?
>>
>> I'd never realized Euphoria didn't bring this ?!
>>
>> Rob, why don't you include these standard C functions on next release
>> (there're at io.h, stdio.h, dir.h):
>>
>>     access    chmod    chsize    lock
>>     unlock     mktemp  remove  rename
>>     mkdir       rmdir
>
>
>
>did you take a look at the system command? you get access to all of
>DOS's
>functions that way...also, unless i miss my guess, those commands above
>are a variant of some sort of UNIX...no? if so, then (to my knowledge)
>Euphoria doesn't support UNIX variants yet...
>
>hope this helps (HTH-- my contribution to the initial clutter for this
>week :) )
>--mike


I know we can use system(), but that's a shell call... not a native code.
The point is that it's really easy for Rob to include them in Euphoria.
Besides, if you're using a GUI a system() call will flicker the screen.

Regards,
    Daniel Berstein
    daber at pair.com

new topic     » goto parent     » topic index » view message » categorize

6. Re: File handling

Daniel Berstein:
>    access    chmod    chsize    lock
>    unlock     mktemp  remove  rename
>    mkdir       rmdir

GREAT! I vote for this blink

Irv Mullins:
>How about system(delete, rename, mkdir, rmdir, attrib)?

They need command.com AND they will cause screen flicker under exw.

The last one ALSO needs attrib.exe.

What if attrib.exe has a virus? blink

>The file/record lockings are available via an interrupt,
>so a Euphoria include file could be written to call
>the interrupt, if there was any interest. How many people are
>runnng Euphoria on shared data?

How many people are running a share-aware program on non-shared data?

How many people are not using the lock/unlock mechanism of C?

How many people omit SHARED or LOCK ... when OPENing a file in BASIC?

What I am saying is, that it's better to have something even if most of us
don't use it, than not to have something someone is going to use!

Euphoria is (almost) a complete language, which is why I like it. Why force
programmers to manually code lock() in Assembly? Or, use system() to call
system commands? smile

For example, there is someone in this list [me blink] who almost never uses
graphics_mode() but is glad it exists when it is needed... who would want
to do system("mode co80", 2); everytime?

Why is there puts() if you can code system("echo " & seq, 2);? (To redirect
output to file you use system("echo " & seq & " >file", 2);)

Why is there printf() if you can code system("echo " & sprintf(fmtstr,
seq), 2);?

Ah, a few new procedures/functions (on file handling) will NOT hurt anyone blink

new topic     » goto parent     » topic index » view message » categorize

7. Re: File handling

>Besides, if you're using a GUI a system() call will flicker the screen.

When you call system, one of the parameters passed is a flag telling whether
you want screen output or not. So the screenflicker can be avoided. (am I
right?)

Einar

new topic     » goto parent     » topic index » view message » categorize

8. Re: File handling

-----Original Message-----
De: Einar Mogen <nord.staernes at ROLLAG.MAIL.TELIA.COM>
Para: EUPHORIA at cwisserver1.mcs.muohio.edu
<EUPHORIA at cwisserver1.mcs.muohio.edu>
Fecha: domingo 7 de junio de 1998 5:40
Asunto: Re: File handling


>>Besides, if you're using a GUI a system() call will flicker the screen.
>
>When you call system, one of the parameters passed is a flag telling
whether
>you want screen output or not. So the screenflicker can be avoided. (am I
>right?)


No. The parameter is to tell the function if the system has to change video
mode before returning control to the program. If you're program runs on text
mode you can tell system you don't need a video change... else you need
it ---> flicker :(

I'm sure that Rob can hardcode these functions into Euphoria. In the
meantime I coded some Euphoria functions that use int 21 to do the job (no
lock/unlock). I just sent them to Rob.... grab them soon from RDS's site.

Regards,
    Daniel Berstein
    daber at pair.com

new topic     » goto parent     » topic index » view message » categorize

9. Re: File handling

At 03:13 PM 6/7/98 +0700, Andy Kurnia wrote:
>
>What I am saying is, that it's better to have something even if most of us
>don't use it, than not to have something someone is going to use!
>
One word: C


Irv

new topic     » goto parent     » topic index » view message » categorize

10. Re: File handling

At 04:53 AM 6/7/98 -0300,  Daniel  wrote:
>-
>De: Einar Mogen <nord.staernes at ROLLAG.MAIL.TELIA.COM>

>>>Besides, if you're using a GUI a system() call will flicker the screen.
>>
>>When you call system, one of the parameters passed is a flag telling
>whether
>>you want screen output or not. So the screenflicker can be avoided. (am I
>>right?)
>
>No. The parameter is to tell the function if the system has to change video
>mode before returning control to the program. If you're program runs on text
>mode you can tell system you don't need a video change... else you need
>it ---> flicker :(
>
I am puzzled. I just added a command to one of the buttons in
my GUI database to delete a file: system("delete test.xxx",2)

When I click that button, the file gets deleted, and there is
no flicker or other problem. More surprising, if the file is not found, a
neat "file not found" appears at the top of the screen without changing from
mode 256, and you continue on without trouble.

Ok, the truth is I have been secretly deleting your files at
random every time you play my concentration game...didn't notice,
did you?
Bwahahaha!!!

Irv

new topic     » goto parent     » topic index » view message » categorize

11. Re: File handling

mountains at MINDSPRING.COM wrote:
>
> At 08:05 PM 6/6/98 -0300, you wrote:
> >Has anyone done routines for deleting, renaming, copying, moving, and
> >creating temporary files?
> >
> How about system(delete, rename, mkdir, rmdir, attrib)?
>

The main problem with system() is the lack of error reporting if one of
the commands fail for some reason. I have written two special routines
that use system() and the special features of 4Dos to capture stderr
output, exit code of internal commands, and exit code of external
commands. But these routines are kludges. If there were a system type
function that could capture and return such information, it would be a
step forward.

One possible example, using 4Dos.com:


sequence errinfo
errinfo = systemcap("Rename MyFile ThisFile",?)


errinfo would contain {atom, atom, sequence}
that is, {External exit code, internal exit code, sequence containing
stderr}

Its been so long since I worked with Command.com, I can't remember if
there is a way to get exit code info on internal commands. If not there
would only be one atom.

In any case, the return sequence would have information about success or
failure that could be analyzed.

--
Terry Constant
constant at flash.net

new topic     » goto parent     » topic index » view message » categorize

12. Re: File handling

At 06:44 AM 6/7/98 -0500, Terry Constant wrote:

>Its been so long since I worked with Command.com, I can't remember if
>there is a way to get exit code info on internal commands. If not there
>would only be one atom.
>
There must be a way. Batch files can branch based on errorlevel.
Also there is interrupt 4Dh that reads the errorlevel returned
on a program exit (I think. Anybody want to wade thru the dos-ref
and find out for sure?)

>In any case, the return sequence would have information about success or
>failure that could be analyzed.
>
Someone made a suggestion to Rob that system() be made a function,
rather than a procedure, for exactly that purpose. I hope he
sees fit to change it.

Irv

new topic     » goto parent     » topic index » view message » categorize

13. Re: File handling

At 08:05 AM 6/7/98 -0400, you wrote:

>At 06:44 AM 6/7/98 -0500, Terry Constant wrote:
>
>>Its been so long since I worked with Command.com, I can't remember if
>>there is a way to get exit code info on internal commands. If not there
>>would only be one atom.
>>
>There must be a way. Batch files can branch based on errorlevel.
>Also there is interrupt 4Dh that reads the errorlevel returned
>on a program exit (I think. Anybody want to wade thru the dos-ref
>and find out for sure?)
>
>>In any case, the return sequence would have information about success or
>>failure that could be analyzed.
>>
>Someone made a suggestion to Rob that system() be made a function,
>rather than a procedure, for exactly that purpose. I hope he
>sees fit to change it.
>
I tried the interrupt routine below, but it doesn't work.
Why? My guess is because the errorlevel code is destroyed
by the first call to errorlevel.
Perhaps system() is using (therefore destroying) it before
returning?  Only Rob can tell us.
On the other hand, maybe something is wrong with my interrupt
routine. I don't know much about writing these.

include machine.e
sequence reg_list -- list of register values

function ErrorLevel()
reg_list = repeat(0, 10)
reg_list[REG_AX] = #4D00  -- function: get ERRORLEVEL

reg_list = dos_interrupt(#21, reg_list) -- Call DOS interrupt #21
return reg_list
end function

? ErrorLevel()
system("del test.xxx",2)
? ErrorLevel()  -- prints same as above, regardless of whether
                -- the system call fails or succeeds.

Irv
ref:Programmer's Technical Reference for MSDOS and the IBM PC
    Chap.4

Function  4Dh   Get Return Code of a Subprocess              (WAIT)
                Get return from functions 31h and 4Dh  (ERRORLEVEL)
entry   AH      4Dh
return  AH      circumstance which caused termination
                00h     normal termination
                01h     control-break or control-C
                02h     critical device error
                03h     terminate and stay resident (function 31h)
        AL      exit code of subprogram (functions 31h or 4Ch)
note 1) The exit code is only returned once (the first time).
     2) This call is explicitly supported in the OS/2 1.x DOS
        Compatibility Box.
     3) Many programmers have wondered where DOS stores this
        information, so they might access it multiple times or set it
        directly.  This is a version-dependent area that changes with
        every release of DOS.

new topic     » goto parent     » topic index » view message » categorize

14. Re: File handling

Irv wrote:
>
> I tried the interrupt routine below, but it doesn't work.
> Why? My guess is because the errorlevel code is destroyed
> by the first call to errorlevel.
> Perhaps system() is using (therefore destroying) it before
> returning?  Only Rob can tell us.
> On the other hand, maybe something is wrong with my interrupt
> routine. I don't know much about writing these.
>
> include machine.e
> sequence reg_list -- list of register values
>
> function ErrorLevel()
> reg_list = repeat(0, 10)
> reg_list[REG_AX] = #4D00  -- function: get ERRORLEVEL
>
> reg_list = dos_interrupt(#21, reg_list) -- Call DOS interrupt #21
> return reg_list
> end function
>
> ? ErrorLevel()
> system("del test.xxx",2)
> ? ErrorLevel()  -- prints same as above, regardless of whether
>                 -- the system call fails or succeeds.
>

Irv,
Its been awhile since I worked with this stuff. But my first response to
your "Why?" it doesn't work is that your first call to ErrorLevel() is
to the shell (of Command.com) that the Euphoria program is in. The
system() loads another shell, so any error codes generated by programs
in that shell go there. By the time you get to your second call to
ErrorLevel(), the shell is gone in which the error codes were generated
and your second call is merely reading the same shell as the first call,
that is the same info.

--
Terry Constant
constant at flash.net

new topic     » goto parent     » topic index » view message » categorize

Search



Quick Links

User menu

Not signed in.

Misc Menu