]> git.ipfire.org Git - thirdparty/squid.git/blobdiff - src/DiskIO/DiskDaemon/diskd.cc
Source Format Enforcement (#763)
[thirdparty/squid.git] / src / DiskIO / DiskDaemon / diskd.cc
index 7daf23cb895c47f02ed9220b5212409d3a44370d..e0588bba1fb0b1735277f5dbaccb904a6f0d7a56 100644 (file)
@@ -1,42 +1,19 @@
 /*
- * DEBUG: section --    External DISKD process implementation.
- * AUTHOR: Harvest Derived
- *
- * SQUID Web Proxy Cache          http://www.squid-cache.org/
- * ----------------------------------------------------------
- *
- *  Squid is the result of efforts by numerous individuals from
- *  the Internet community; see the CONTRIBUTORS file for full
- *  details.   Many organizations have provided support for Squid's
- *  development; see the SPONSORS file for full details.  Squid is
- *  Copyrighted (C) 2001 by the Regents of the University of
- *  California; see the COPYRIGHT file for full details.  Squid
- *  incorporates software developed and/or copyrighted by other
- *  sources; see the CREDITS file for full details.
- *
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2 of the License, or
- *  (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  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.
+ * Copyright (C) 1996-2021 The Squid Software Foundation and contributors
  *
+ * Squid software is distributed under GPLv2+ license and includes
+ * contributions from numerous individuals and organizations.
+ * Please see the COPYING and CONTRIBUTORS files for details.
  */
 
+/* DEBUG: section --    External DISKD process implementation. */
+
 #include "squid.h"
 #include "DiskIO/DiskDaemon/diomsg.h"
 #include "hash.h"
 
-#if HAVE_ERRNO_H
-#include <errno.h>
-#endif
+#include <cerrno>
+#include <iostream>
 #if HAVE_SYS_IPC_H
 #include <sys/ipc.h>
 #endif
@@ -46,9 +23,6 @@
 #if HAVE_SYS_SHM_H
 #include <sys/shm.h>
 #endif
-#if HAVE_IOSTREAM
-#include <iostream>
-#endif
 
 void
 xassert(const char *msg, const char *file, int line)
@@ -77,7 +51,7 @@ static char *shmbuf;
 static int DebugLevel = 0;
 
 static int
-do_open(diomsg * r, int len, const char *buf)
+do_open(diomsg * r, int, const char *buf)
 {
     int fd;
     file_state *fs;
@@ -111,7 +85,7 @@ do_open(diomsg * r, int len, const char *buf)
 }
 
 static int
-do_close(diomsg * r, int len)
+do_close(diomsg * r, int)
 {
     int fd;
     file_state *fs;
@@ -141,7 +115,7 @@ do_close(diomsg * r, int len)
 }
 
 static int
-do_read(diomsg * r, int len, char *buf)
+do_read(diomsg * r, int, char *buf)
 {
     int x;
     int readlen = r->size;
@@ -191,7 +165,7 @@ do_read(diomsg * r, int len, char *buf)
 }
 
 static int
-do_write(diomsg * r, int len, const char *buf)
+do_write(diomsg * r, int, const char *buf)
 {
     int wrtlen = r->size;
     int x;
@@ -237,7 +211,7 @@ do_write(diomsg * r, int len, const char *buf)
 }
 
 static int
-do_unlink(diomsg * r, int len, const char *buf)
+do_unlink(diomsg * r, int, const char *buf)
 {
     if (unlink(buf) < 0) {
         DEBUG(1) {
@@ -270,6 +244,10 @@ msg_handle(diomsg * r, int rl, diomsg * s)
 
     if (s->shm_offset > -1)
         buf = shmbuf + s->shm_offset;
+    else if (r->mtype != _MQD_CLOSE) {
+        fprintf(stderr, "%d UNLNK id(%u) Error: no filename in shm buffer\n", (int) mypid, s->id);
+        return;
+    }
 
     switch (r->mtype) {
 
@@ -317,11 +295,8 @@ fsHash(const void *key, unsigned int n)
     return (*k & (--n));
 }
 
-SQUIDCEXTERN {
-    static void
-    alarm_handler(int sig) {
-        (void) 0;
-    }
+extern "C" {
+    static void alarm_handler(int) {}
 };
 
 int
@@ -346,7 +321,7 @@ main(int argc, char *argv[])
 
     if (rmsgid < 0) {
         perror("msgget");
-        return 1;
+        exit(EXIT_FAILURE);
     }
 
     key = atoi(argv[2]);
@@ -354,7 +329,7 @@ main(int argc, char *argv[])
 
     if (smsgid < 0) {
         perror("msgget");
-        return 1;
+        exit(EXIT_FAILURE);
     }
 
     key = atoi(argv[3]);
@@ -362,19 +337,22 @@ main(int argc, char *argv[])
 
     if (shmid < 0) {
         perror("shmget");
-        return 1;
+        exit(EXIT_FAILURE);
     }
 
     shmbuf = (char *)shmat(shmid, NULL, 0);
 
     if (shmbuf == (void *) -1) {
         perror("shmat");
-        return 1;
+        exit(EXIT_FAILURE);
     }
 
     hash = hash_create(fsCmp, 1 << 4, fsHash);
     assert(hash);
-    fcntl(0, F_SETFL, SQUID_NONBLOCK);
+    if (fcntl(0, F_SETFL, SQUID_NONBLOCK) < 0) {
+        perror(xstrerr(errno));
+        exit(EXIT_FAILURE);
+    }
     memset(&sa, '\0', sizeof(sa));
     sa.sa_handler = alarm_handler;
     sa.sa_flags = SA_RESTART;
@@ -435,5 +413,6 @@ main(int argc, char *argv[])
     if (shmctl(shmid, IPC_RMID, 0) < 0)
         perror("shmctl IPC_RMID");
 
-    return 0;
+    return EXIT_SUCCESS;
 }
+