]> git.proxmox.com Git - mirror_frr.git/blobdiff - lib/pid_output.c
Merge pull request #6263 from opensourcerouting/zlog-coverity-20200420
[mirror_frr.git] / lib / pid_output.c
index a43c05c430526c9be58e0a967429f76d39329950..f5f7b1d17172bc822ac8ed5339c69526d9db28dd 100644 (file)
  * 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 GNU Zebra; see the file COPYING.  If not, write to the Free
- * Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
- * 02111-1307, USA.
+ * You should have received a copy of the GNU General Public License along
+ * with this program; see the file COPYING; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
  */
 
 #include <zebra.h>
@@ -25,6 +24,7 @@
 #include <log.h>
 #include "version.h"
 #include "network.h"
+#include "lib_errors.h"
 
 #define PIDFILE_MASK 0644
 
@@ -42,8 +42,9 @@ pid_t pid_output(const char *path)
        oldumask = umask(0777 & ~PIDFILE_MASK);
        fd = open(path, O_RDWR | O_CREAT, PIDFILE_MASK);
        if (fd < 0) {
-               zlog_err("Can't create pid lock file %s (%s), exiting", path,
-                        safe_strerror(errno));
+               flog_err_sys(EC_LIB_SYSTEM_CALL,
+                            "Can't create pid lock file %s (%s), exiting",
+                            path, safe_strerror(errno));
                umask(oldumask);
                exit(1);
        } else {
@@ -58,20 +59,25 @@ pid_t pid_output(const char *path)
                lock.l_whence = SEEK_SET;
 
                if (fcntl(fd, F_SETLK, &lock) < 0) {
-                       zlog_err("Could not lock pid_file %s, exiting", path);
+                       flog_err_sys(EC_LIB_SYSTEM_CALL,
+                                    "Could not lock pid_file %s (%s), exiting.  Please ensure that the daemon is not already running",
+                                    path, safe_strerror(errno));
                        exit(1);
                }
 
                sprintf(buf, "%d\n", (int)pid);
                pidsize = strlen(buf);
                if ((tmp = write(fd, buf, pidsize)) != (int)pidsize)
-                       zlog_err(
+                       flog_err_sys(
+                               EC_LIB_SYSTEM_CALL,
                                "Could not write pid %d to pid_file %s, rc was %d: %s",
                                (int)pid, path, tmp, safe_strerror(errno));
                else if (ftruncate(fd, pidsize) < 0)
-                       zlog_err(
+                       flog_err_sys(
+                               EC_LIB_SYSTEM_CALL,
                                "Could not truncate pid_file %s to %u bytes: %s",
-                               path, (u_int)pidsize, safe_strerror(errno));
+                               path, (unsigned int)pidsize,
+                               safe_strerror(errno));
        }
        return pid;
 }