Simon,
Here is the prototype I am using.
// C function to rename a file
d Rename pr 10i 0 ExtProc('rename')
d OldFile * Value
d NewFile * Value
I am curious about your assertion that the rename function maps differently depending on how the program is compiled. I did spend time in the C Run-time Library Functions manual yesterday before posting but I don't remember seeing anything about changing the behavior based on the compile. I'll check again.
Would I be better off using the API?
Rick
-----Original Message-----
From: rpg400-l-bounces@xxxxxxxxxxxx [mailto:rpg400-l-bounces@xxxxxxxxxxxx] On Behalf Of Simon Coulter
Sent: Tuesday, June 22, 2010 5:43 PM
To: RPG programming on the IBM i / System i
Subject: Re: C rename returns -1 but error text says no error exists
On 23/06/2010, at 5:44 AM, <Rick.Chevalier@xxxxxxxxxxxxxxx> <Rick.Chevalier@xxxxxxxxxxxxxxx > wrote:
I'm trying to determine what I'm doing wrong with the C rename
function. I am trying to rename a file on the IFS. The rename
function returns -1 which I understand to mean an error. I then use
__errno and strerror to return the error text. What I get is a error
number of 0 and a text of no error exits. There are no messages in
the job log. I'm at a loss where to look next.
Here's the pertinent code:
Except you didn't show the most important piece which is your prototype for the rename() function.
The C runtime rename() function expects lib/file (i.e., *FILE object) names by default. When compiling C for stream file support rename() maps to either Qp0lRenameKeep() or Qp0lRenameUnlink() depending on compiler options--which of the three variants are you using?
Examine the documentation for rename() in the C Run-time Library Functions manual. Note that it does not list any errno values? This indicates that it returns -1 on error an no other information.
When rename() is mapped to one of the POSIX functions then errno is set. This makes me think you are using the C run-time rename() which will never work on a stream file.
Regards,
Simon Coulter.
--------------------------------------------------------------------
FlyByNight Software OS/400, i5/OS Technical Specialists
http://www.flybynight.com.au/
Phone: +61 2 6657 8251 Mobile: +61 0411 091 400 /"\
Fax: +61 2 6657 8251 \ /
X
ASCII Ribbon campaign against HTML E-Mail / \
Privileged and Confidential. This e-mail, and any attachments there to, is intended only for use by the addressee(s) named herein and may contain privileged or confidential information. If you have received this e-mail in error, please notify me immediately by a return e-mail and delete this e-mail. You are hereby notified that any dissemination, distribution or copying of this e-mail and/or any attachments thereto, is strictly prohibited.
As an Amazon Associate we earn from qualifying purchases.