Simplify pass_buffer_as_shm().
[paraslash.git] / afs.c
diff --git a/afs.c b/afs.c
index 9cef049..f76da3d 100644 (file)
--- a/afs.c
+++ b/afs.c
@@ -580,7 +580,7 @@ static void com_select_callback(int fd, const struct osl_object *query)
                        current_mop : "dummy mood", num_admissible);
 out:
        if (ret2 >= 0 && pb.offset)
-               pass_buffer_as_shm(pb.buf, pb.offset, &fd);
+               pass_buffer_as_shm(fd, pb.buf, pb.offset);
        free(pb.buf);
 }
 
@@ -786,20 +786,23 @@ static void command_pre_select(struct sched *s, struct task *t)
 /**
  * Send data as shared memory to a file descriptor.
  *
+ * \param fd File descriptor to send the shmid to.
  * \param buf The buffer holding the data to be sent.
  * \param size The size of \a buf.
- * \param fd_ptr A pointer to the file descriptor.
  *
  * This function creates a shared memory area large enough to hold
  * the content given by \a buf and \a size and sends the identifier
  * of this area to the file descriptor given by \a fd_ptr.
  *
+ * It is called by the AFS max_size handler as well as directly by the AFS
+ * command callbacks to send command output to the command handlers.
+ *
  * \return Zero if \a buf is \p NULL or \a size is zero. Negative on errors,
  * and positive on success.
  */
-int pass_buffer_as_shm(char *buf, size_t size, void *fd_ptr)
+int pass_buffer_as_shm(int fd, char *buf, size_t size)
 {
-       int ret, shmid, fd = *(int *)fd_ptr;
+       int ret, shmid;
        void *shm;
        struct callback_result *cr;
 
@@ -1022,7 +1025,7 @@ out:
        if (ret < 0)
                para_printf(&pb, "%s\n", para_strerror(-ret));
        if (pb.buf)
-               pass_buffer_as_shm(pb.buf, pb.offset, &fd);
+               pass_buffer_as_shm(fd, pb.buf, pb.offset);
        free(pb.buf);
 }