I appreciate the tips.
The authorities are a requirement of the sister company receiving the file
via ftp - they built an engine to auto process files when received, but it's
a little too dumb to deal with authorities so they require all of the
companies to send a file with 777 auth to their unix system.
Jim
-----Original Message-----
From: RPG400-L [mailto:rpg400-l-bounces@xxxxxxxxxxxx] On Behalf Of Scott
Klement
Sent: Thursday, June 16, 2016 5:34 PM
To: RPG programming on the IBM i (AS/400 and iSeries)
Subject: Re: how to handle open() of ifs file and checking if busy
Jim,
There are flags named O_SHARE_xxx (where xxx refers to a particular sharing
style) that can be used to 'lock' the file. However, since you aren't using
them in your example, this code will not tell you if a file is "busy". The
way you've coded it it will be perfectly happy to use a file that's in use,
or even deleted, by other jobs.
Here are some suggestions:
1) Please consider using O_CCSID instead of O_CODEPAGE.
2) You are opening/creating a new file, but telling it that the code page is
819. Is the data in your RPG program really already in ASCII?
Assuming this file contains text, please consider using O_TEXTDATA,
O_TEXT_CREAT, and giving it both the program and file CCSID.
3) Instead of hard-coding the file's "mode" (authorities) please consider
using O_INHERITMODE to inherit the authorities. It makes it so much easier
for an administrator to control authorities when they aren't hard-coded in
individual programs!
4) You are giving everyone execute access to the file, which means someone
can try to /run/ it. That might make sense if you're writing something like
a shell script to be run in QShell or PASE, but it could also be a mistake,
so I thought I'd point it out.
-SK
On 6/16/2016 8:21 AM, Jim Franz wrote:
c eval fd = open(%trim(filename):
c O_CREAT+O_WRONLY+O_CODEPAGE:
c S_IRWXO+S_IRWXU+S_IRWXG:
c 819)
c if fd < 0
c callp die('open(): ' + %str(strerror(errno)))
c eval @errflag='Y'
c endif
Where can I find the list of values returned from open() so I can code
for a busy issue?
(This is early 2000's code copied from Scott's samples.
Jim Franz
--
This is the RPG programming on the IBM i (AS/400 and iSeries) (RPG400-L)
mailing list To post a message email: RPG400-L@xxxxxxxxxxxx To subscribe,
unsubscribe, or change list options,
visit:
http://lists.midrange.com/mailman/listinfo/rpg400-l
or email: RPG400-L-request@xxxxxxxxxxxx
Before posting, please take a moment to review the archives at
http://archive.midrange.com/rpg400-l.
Please contact support@xxxxxxxxxxxx for any subscription related questions.
As an Amazon Associate we earn from qualifying purchases.