Fix sparse warnings and add an extra sprinkling of const.
[tinc] / lib / pidfile.c
index 08d96df..6e24d5f 100644 (file)
@@ -14,9 +14,9 @@
     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     GNU General Public License for more details.
 
-    You should have received a copy of the GNU General Public License
-    along with this program; if not, write to the Free Software
-    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA
+    You should have received a copy of the GNU General Public License along
+    with this program; if not, write to the Free Software Foundation, Inc.,
+    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
 */
 
 /* left unaltered for tinc -- Ivo Timmermans */
@@ -27,6 +27,8 @@
 
 #include "system.h"
 
+#include "pidfile.h"
+
 #ifndef HAVE_MINGW
 /* read_pid
  *
  * 0 is returned if either there's no pidfile, it's empty
  * or no pid can be read.
  */
-pid_t read_pid (char *pidfile)
+pid_t read_pid (const char *pidfile)
 {
   FILE *f;
   long pid;
 
   if (!(f=fopen(pidfile,"r")))
     return 0;
-  fscanf(f,"%ld", &pid);
+  if(fscanf(f,"%20ld", &pid) != 1)
+    pid = 0;
   fclose(f);
   return pid;
 }
@@ -52,7 +55,7 @@ pid_t read_pid (char *pidfile)
  * table (using /proc) to determine if the process already exists. If
  * so the pid is returned, otherwise 0.
  */
-pid_t check_pid (char *pidfile)
+pid_t check_pid (const char *pidfile)
 {
   pid_t pid = read_pid(pidfile);
 
@@ -78,19 +81,18 @@ pid_t check_pid (char *pidfile)
  * Writes the pid to the specified file. If that fails 0 is
  * returned, otherwise the pid.
  */
-pid_t write_pid (char *pidfile)
+pid_t write_pid (const char *pidfile)
 {
   FILE *f;
   int fd;
   pid_t pid;
 
   if ((fd = open(pidfile, O_RDWR|O_CREAT, 0644)) == -1) {
-      close(fd);
       return 0;
   }
 
   if ((f = fdopen(fd, "r+")) == NULL) {
-      fclose(f);
+      close(fd);
       return 0;
   }
   
@@ -124,7 +126,7 @@ pid_t write_pid (char *pidfile)
  * Remove the the specified file. The result from unlink(2)
  * is returned
  */
-int remove_pid (char *pidfile)
+int remove_pid (const char *pidfile)
 {
   return unlink (pidfile);
 }