Re: unix semantics fuck up
On Mon, Apr 15, 2013 at 10:44 AM, sven falempin wrote: > *-i*[*extension*] > > -i"\.sed" > > but wow, nice way to destroy file. > > oh , it is tmpfs related :-) > > On Mon, Apr 15, 2013 at 8:12 AM, Marc Espie wrote: > >> $ cat goodfilename >> coincoin >> >> $ perl -pi -e 's/toto/tutu/' goodfilename >> works >> >> $ cp goodfilename /tmp >> $ perl -pi -e 's/toto/tutu/' /tmp/goodfilename >> Can't do inplace edit on goodfilename: File exists. >> $ cat /tmp/goodfilename >> cat: /tmp/goodfilename: No such file or directory. >> >> ktrace shows a disturbing lack of Unix semantics: >> >> 15350 perl CALL open(0x1850b9e863f0,0) >> 15350 perl NAMI "goodfilename" >> 15350 perl RET open 3 >> ... >> 15350 perl CALL unlink(0x1850b9e86a00) >> 15350 perl NAMI "goodfilename" >> 15350 perl RET unlink 0 >> 15350 perl CALL >> open(0x1850b9e868e0,0xa01,0x180) >> 15350 perl NAMI "goodfilename" >> 15350 perl RET open -1 errno 17 File exists >> >> >> err... >> >> simply put: >> >> #include >> #include >> #include >> >> int >> main() >> { >> if (open("fucked_up", O_RDWR|O_CREAT|O_TRUNC, 0666) == -1) >> perror("open"); >> if (unlink("fucked_up") != 0) >> perror("unlink"); >> if (open("fucked_up", O_WRONLY|O_CREAT|O_EXCL, 0666) == -1) >> perror("reopen"); >> return 0; >> } >> >> > > > -- > > - > () ascii ribbon campaign - against html e-mail > /\ > -- - () ascii ribbon campaign - against html e-mail /\
Re: unix semantics fuck up
*-i*[*extension*] -i"\.sed" but wow, nice way to destroy file. On Mon, Apr 15, 2013 at 8:12 AM, Marc Espie wrote: > $ cat goodfilename > coincoin > > $ perl -pi -e 's/toto/tutu/' goodfilename > works > > $ cp goodfilename /tmp > $ perl -pi -e 's/toto/tutu/' /tmp/goodfilename > Can't do inplace edit on goodfilename: File exists. > $ cat /tmp/goodfilename > cat: /tmp/goodfilename: No such file or directory. > > ktrace shows a disturbing lack of Unix semantics: > > 15350 perl CALL open(0x1850b9e863f0,0) > 15350 perl NAMI "goodfilename" > 15350 perl RET open 3 > ... > 15350 perl CALL unlink(0x1850b9e86a00) > 15350 perl NAMI "goodfilename" > 15350 perl RET unlink 0 > 15350 perl CALL > open(0x1850b9e868e0,0xa01,0x180) > 15350 perl NAMI "goodfilename" > 15350 perl RET open -1 errno 17 File exists > > > err... > > simply put: > > #include > #include > #include > > int > main() > { > if (open("fucked_up", O_RDWR|O_CREAT|O_TRUNC, 0666) == -1) > perror("open"); > if (unlink("fucked_up") != 0) > perror("unlink"); > if (open("fucked_up", O_WRONLY|O_CREAT|O_EXCL, 0666) == -1) > perror("reopen"); > return 0; > } > > -- - () ascii ribbon campaign - against html e-mail /\
unix semantics fuck up
$ cat goodfilename coincoin $ perl -pi -e 's/toto/tutu/' goodfilename works $ cp goodfilename /tmp $ perl -pi -e 's/toto/tutu/' /tmp/goodfilename Can't do inplace edit on goodfilename: File exists. $ cat /tmp/goodfilename cat: /tmp/goodfilename: No such file or directory. ktrace shows a disturbing lack of Unix semantics: 15350 perl CALL open(0x1850b9e863f0,0) 15350 perl NAMI "goodfilename" 15350 perl RET open 3 ... 15350 perl CALL unlink(0x1850b9e86a00) 15350 perl NAMI "goodfilename" 15350 perl RET unlink 0 15350 perl CALL open(0x1850b9e868e0,0xa01,0x180) 15350 perl NAMI "goodfilename" 15350 perl RET open -1 errno 17 File exists err... simply put: #include #include #include int main() { if (open("fucked_up", O_RDWR|O_CREAT|O_TRUNC, 0666) == -1) perror("open"); if (unlink("fucked_up") != 0) perror("unlink"); if (open("fucked_up", O_WRONLY|O_CREAT|O_EXCL, 0666) == -1) perror("reopen"); return 0; }