LinuxQuestions.org

LinuxQuestions.org (/questions/)
-   Programming (https://www.linuxquestions.org/questions/programming-9/)
-   -   unable to modify created and modification time of symbolic links (https://www.linuxquestions.org/questions/programming-9/unable-to-modify-created-and-modification-time-of-symbolic-links-624888/)

avanigadhai 03-01-2008 12:36 AM

unable to modify created and modification time of symbolic links
 
Hi,

I am trying to duplicate a symbolic link, the new link should be the exact replica of the original one, with same file attributes, permissions, owner, group and even the time.

i m successful in changing the owner and group, but when i try to change the time using utime, the time of the file which is pointed to by this link get updated.

for example, there is file1 and file1_link is a symbolic link to file1. something like this:

lrwxrwxrwx 1 avni avni 5 Feb 27 11:44 file1_link -> file1
-rw-rw-rw- 1 avni avni 2061 Feb 26 18:47 file1


now i have to duplicate file1_link so that i have

lrwxrwxrwx 1 avni avni 5 Feb 27 11:44 file1_link_dup -> file1

but instead i get
lrwxrwxrwx 1 avni avni 5 Feb 28 11:30 file1_link_dup -> file1

when is do utime for file1_link_dup the result is something like this:
lrwxrwxrwx 1 avni avni 5 Feb 27 11:44 file1_link -> file1
-rw-rw-rw- 1 avni avni 2061 Feb 27 11:44 file1
lrwxrwxrwx 1 avni avni 5 Feb 28 11:30 file1_link_dup -> file1


can any body tell how this can be achieved.
I read about lutimes, but its not on my system.

i am writing code in C. I don't want to use perl.

The kernel is 2.4.7.

I am new to UNIX and hence have little knowledge of the various distributions and commands available.

Can any one guide me where should I start the search for the solution!!!

If you think this is the wrong forum, then Please guide me to the correct forum.

Thanks in advance.

ta0kira 03-01-2008 09:29 AM

How do you know lutimes isn't on your system? It doesn't have a manpage on my system, but info libc lists it. Have you tried using it?
ta0kira

osor 03-01-2008 11:45 AM

Quote:

Originally Posted by ta0kira (Post 3074799)
How do you know lutimes isn't on your system?

Because lutimes() on linux uses the utimensat() system call with the AT_SYMLINK_NOFOLLOW flag. This system call was introduced in linux-2.6.22, so is unavailable for 2.4.7.

avanigadhai 03-02-2008 11:13 PM

Quote:

Originally Posted by ta0kira (Post 3074799)
How do you know lutimes isn't on your system? It doesn't have a manpage on my system, but info libc lists it. Have you tried using it?
ta0kira

thanks ta0kira for your reply.

I know lutimes is not in my system because when i used it, the compiler flashed an error "function not implemented". I read info lutimes, this is the reason that i tried using it in my code.

avanigadhai 03-02-2008 11:19 PM

Quote:

Originally Posted by osor (Post 3074894)
Because lutimes() on linux uses the utimensat() system call with the AT_SYMLINK_NOFOLLOW flag. This system call was introduced in linux-2.6.22, so is unavailable for 2.4.7.

thanks osor,
Is it possible to implement utimes like function?
I strongly believe that there should be some way to modify the time of links. The main reason being, there would be some inode that maintains the record for the link, and if there is some inode there should be some sub-routine to access/modify it.


All times are GMT -5. The time now is 12:52 AM.