× The internal search function is temporarily non-functional. The current search engine is no longer viable and we are researching alternatives.
As a stop gap measure, we are using Google's custom search engine service.
If you know of an easy to use, open source, search engine ... please contact support@midrange.com.



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.

This thread ...

Follow-Ups:
Replies:

Follow On AppleNews
Return to Archive home page | Return to MIDRANGE.COM home page

This mailing list archive is Copyright 1997-2024 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].

Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.