/* This file is part of libmicrohttpd Copyright (C) 2007-2018 Daniel Pittman and Christian Grothoff This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /** * @file lib/action_process_upload.c * @brief implementation of MHD_action_process_upload() * @author Christian Grothoff */ #include "internal.h" /** * Internal details about an upload action. */ struct UploadAction { /** * An upload action is an action. This field * must come first! */ struct MHD_Action action; MHD_UploadCallback uc; void *uc_cls; }; /** * The application wants to process uploaded data for * the given request. Do it! * * @param cls the `struct UploadAction` with the * function we are to call for upload data * @param request the request for which we are to process * upload data * @return #MHD_SC_OK on success */ static enum MHD_StatusCode upload_action (void *cls, struct MHD_Request *request) { struct UploadAction *ua = cls; (void) ua; // FIXME: implement! return -1; } /** * Create an action that handles an upload. * * @param uc function to call with uploaded data * @param uc_cls closure for @a uc * @return NULL on error (out of memory) * @ingroup action */ const struct MHD_Action * MHD_action_process_upload (MHD_UploadCallback uc, void *uc_cls) { struct UploadAction *ua; if (NULL == (ua = malloc (sizeof (struct UploadAction)))) return NULL; ua->action.action = &upload_action; ua->action.action_cls = ua; ua->uc = uc; ua->uc_cls = uc_cls; return &ua->action; } /* end of action_process_upload.c */