]> git.ipfire.org Git - thirdparty/gcc.git/blobdiff - libiberty/pex-msdos.c
[Ada] Warning for out-of-order record representation clauses
[thirdparty/gcc.git] / libiberty / pex-msdos.c
index bcad93dbe263b3957dd2121d954fd2a5ac47e82e..c7fa8a325d7d7c9bd3c9dc55b5e65666d6b97a31 100644 (file)
@@ -1,7 +1,6 @@
 /* Utilities to execute a program in a subprocess (possibly linked by pipes
    with other subprocesses), and wait for it.  Generic MSDOS specialization.
-   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2005
-   Free Software Foundation, Inc.
+   Copyright (C) 1996-2019 Free Software Foundation, Inc.
 
 This file is part of the libiberty library.
 Libiberty is free software; you can redistribute it and/or
@@ -54,11 +53,12 @@ struct pex_msdos
 static int pex_msdos_open (struct pex_obj *, const char *, int);
 static int pex_msdos_open (struct pex_obj *, const char *, int);
 static int pex_msdos_fdindex (struct pex_msdos *, int);
-static long pex_msdos_exec_child (struct pex_obj *, int, const char *,
+static pid_t pex_msdos_exec_child (struct pex_obj *, int, const char *,
                                  char * const *, char * const *,
-                                  int, int, int, const char **, int *);
+                                 int, int, int, int,
+                                 int, const char **, int *);
 static int pex_msdos_close (struct pex_obj *, int);
-static int pex_msdos_wait (struct pex_obj *, long, int *, struct pex_time *,
+static pid_t pex_msdos_wait (struct pex_obj *, pid_t, int *, struct pex_time *,
                           int, const char **, int *);
 static void pex_msdos_cleanup (struct pex_obj *);
 
@@ -151,9 +151,10 @@ pex_msdos_close (struct pex_obj *obj, int fd)
 
 /* Execute a child.  */
 
-static long
+static pid_t
 pex_msdos_exec_child (struct pex_obj *obj, int flags, const char *executable,
                      char * const * argv, char * const * env, int in, int out,
+                     int toclose ATTRIBUTE_UNUSED,
                      int errdes ATTRIBUTE_UNUSED, const char **errmsg,
                      int *err)
 {
@@ -233,7 +234,7 @@ pex_msdos_exec_child (struct pex_obj *obj, int flags, const char *executable,
       free (scmd);
       free (rf);
       *errmsg = "cannot open temporary command file";
-      return -1;
+      return (pid_t) -1;
     }
 
   for (i = 1; argv[i] != NULL; ++i)
@@ -260,7 +261,7 @@ pex_msdos_exec_child (struct pex_obj *obj, int flags, const char *executable,
       free (scmd);
       free (rf);
       *errmsg = "system";
-      return -1;
+      return (pid_t) -1;
     }
 
   remove (rf);
@@ -273,15 +274,15 @@ pex_msdos_exec_child (struct pex_obj *obj, int flags, const char *executable,
   ms->statuses = XRESIZEVEC(int, ms->statuses, obj->count + 1);
   ms->statuses[obj->count] = status;
 
-  return obj->count;
+  return (pid_t) obj->count;
 }
 
 /* Wait for a child process to complete.  Actually the child process
    has already completed, and we just need to return the exit
    status.  */
 
-static int
-pex_msdos_wait (struct pex_obj *obj, long pid, int *status,
+static pid_t
+pex_msdos_wait (struct pex_obj *obj, pid_t pid, int *status,
                struct pex_time *time, int done ATTRIBUTE_UNUSED,
                const char **errmsg ATTRIBUTE_UNUSED,
                int *err ATTRIBUTE_UNUSED)
@@ -308,10 +309,8 @@ pex_msdos_cleanup (struct pex_obj  *obj)
 
   ms = (struct pex_msdos *) obj->sysdep;
   for (i = 0; i < PEX_MSDOS_FILE_COUNT; ++i)
-    if (msdos->files[i] != NULL)
-      free (msdos->files[i]);
-  if (msdos->statuses != NULL)
-    free (msdos->statuses);
+    free (msdos->files[i]);
+  free (msdos->statuses);
   free (msdos);
   obj->sysdep = NULL;
 }