[hackers] [sbase] touch: posix open || Connor Lane Smith

From: <hg_AT_suckless.org>
Date: Sat, 18 Jun 2011 07:45:20 +0200 (CEST)

changeset: 86:8cd0d43f5b21
tag: tip
user: Connor Lane Smith <cls_AT_lubutu.com>
date: Sat Jun 18 06:43:10 2011 +0100
files: kill.1 touch.c
description:
touch: posix open

diff -r f35314692343 -r 8cd0d43f5b21 kill.1
--- a/kill.1 Sat Jun 18 06:42:24 2011 +0100
+++ b/kill.1 Sat Jun 18 06:43:10 2011 +0100
@@ -25,4 +25,5 @@
 .I signum
 is given, only the corresponding signal name will be printed.
 .SH SEE ALSO
-.IR kill (2)
+.IR kill (2),
+.IR signal (7)
diff -r f35314692343 -r 8cd0d43f5b21 touch.c
--- a/touch.c Sat Jun 18 06:42:24 2011 +0100
+++ b/touch.c Sat Jun 18 06:43:10 2011 +0100
@@ -43,17 +43,20 @@
         struct stat st;
         struct utimbuf ut;
 
- if(stat(str, &st) == -1) {
- if(errno != ENOENT)
- eprintf("stat %s:", str);
- if(cflag)
- return;
- if((fd = creat(str, O_EXCL|S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH)) < 0)
- eprintf("creat %s:", str);
- close(fd);
+ if(stat(str, &st) == 0) {
+ ut.actime = st.st_atime;
+ ut.modtime = t;
+ if(utime(str, &ut) == -1)
+ eprintf("utime %s:", str);
+ return;
         }
- ut.actime = st.st_atime;
- ut.modtime = t;
- if(utime(str, &ut) == -1)
- eprintf("utime %s:", str);
+ else if(errno != ENOENT)
+ eprintf("stat %s:", str);
+ else if(cflag)
+ return;
+ if((fd = open(str, O_CREAT|O_EXCL,
+ S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH)) == -1)
+ eprintf("open %s:", str);
+ close(fd);
+ touch(str);
 }
Received on Sat Jun 18 2011 - 07:45:20 CEST

This archive was generated by hypermail 2.2.0 : Sat Jun 18 2011 - 07:48:06 CEST