wildcard: remove files and move functions into ftplistparser.c

This commit is contained in:
Daniel Stenberg 2023-02-28 09:22:46 +01:00
parent 9c188e771c
commit 56d5c07bbb
No known key found for this signature in database
GPG Key ID: 5CC908FDB71E12C2
6 changed files with 72 additions and 146 deletions

View File

@ -223,7 +223,6 @@ LIB_CFILES = \
version.c \
version_win32.c \
warnless.c \
wildcard.c \
ws.c
LIB_HFILES = \
@ -352,7 +351,6 @@ LIB_HFILES = \
urldata.h \
version_win32.h \
warnless.h \
wildcard.h \
ws.h
LIB_RCFILES = libcurl.rc

View File

@ -181,6 +181,43 @@ struct ftp_parselist_data {
} offsets;
};
static void fileinfo_dtor(void *user, void *element)
{
(void)user;
Curl_fileinfo_cleanup(element);
}
CURLcode Curl_wildcard_init(struct WildcardData *wc)
{
Curl_llist_init(&wc->filelist, fileinfo_dtor);
wc->state = CURLWC_INIT;
return CURLE_OK;
}
void Curl_wildcard_dtor(struct WildcardData **wcp)
{
struct WildcardData *wc = *wcp;
if(!wc)
return;
if(wc->dtor) {
wc->dtor(wc->ftpwc);
wc->dtor = ZERO_NULL;
wc->ftpwc = NULL;
}
DEBUGASSERT(wc->ftpwc == NULL);
Curl_llist_destroy(&wc->filelist, NULL);
free(wc->path);
wc->path = NULL;
free(wc->pattern);
wc->pattern = NULL;
wc->state = CURLWC_INIT;
free(wc);
*wcp = NULL;
}
struct ftp_parselist_data *Curl_ftp_parselist_data_alloc(void)
{
return calloc(1, sizeof(struct ftp_parselist_data));

View File

@ -39,5 +39,39 @@ struct ftp_parselist_data *Curl_ftp_parselist_data_alloc(void);
void Curl_ftp_parselist_data_free(struct ftp_parselist_data **pl_data);
/* list of wildcard process states */
typedef enum {
CURLWC_CLEAR = 0,
CURLWC_INIT = 1,
CURLWC_MATCHING, /* library is trying to get list of addresses for
downloading */
CURLWC_DOWNLOADING,
CURLWC_CLEAN, /* deallocate resources and reset settings */
CURLWC_SKIP, /* skip over concrete file */
CURLWC_ERROR, /* error cases */
CURLWC_DONE /* if is wildcard->state == CURLWC_DONE wildcard loop
will end */
} wildcard_states;
typedef void (*wildcard_dtor)(void *ptr);
/* struct keeping information about wildcard download process */
struct WildcardData {
char *path; /* path to the directory, where we trying wildcard-match */
char *pattern; /* wildcard pattern */
struct Curl_llist filelist; /* llist with struct Curl_fileinfo */
struct ftp_wc *ftpwc; /* pointer to FTP wildcard data */
wildcard_dtor dtor;
unsigned char state; /* wildcard_states */
};
CURLcode Curl_wildcard_init(struct WildcardData *wc);
void Curl_wildcard_dtor(struct WildcardData **wcp);
struct Curl_easy;
#else
/* FTP is disabled */
#define Curl_wildcard_dtor(x)
#endif /* CURL_DISABLE_FTP */
#endif /* HEADER_CURL_FTPLISTPARSER_H */

View File

@ -168,7 +168,7 @@ typedef CURLcode (*Curl_datastream)(struct Curl_easy *data,
#include "rtsp.h"
#include "smb.h"
#include "mqtt.h"
#include "wildcard.h"
#include "ftplistparser.h"
#include "multihandle.h"
#include "c-hyper.h"
#include "cf-socket.h"

View File

@ -1,74 +0,0 @@
/***************************************************************************
* _ _ ____ _
* Project ___| | | | _ \| |
* / __| | | | |_) | |
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
* Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
* are also available at https://curl.se/docs/copyright.html.
*
* You may opt to use, copy, modify, merge, publish, distribute and/or sell
* copies of the Software, and permit persons to whom the Software is
* furnished to do so, under the terms of the COPYING file.
*
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
* SPDX-License-Identifier: curl
*
***************************************************************************/
#include "curl_setup.h"
#ifndef CURL_DISABLE_FTP
#include "wildcard.h"
#include "llist.h"
#include "fileinfo.h"
/* The last 3 #include files should be in this order */
#include "curl_printf.h"
#include "curl_memory.h"
#include "memdebug.h"
static void fileinfo_dtor(void *user, void *element)
{
(void)user;
Curl_fileinfo_cleanup(element);
}
CURLcode Curl_wildcard_init(struct WildcardData *wc)
{
Curl_llist_init(&wc->filelist, fileinfo_dtor);
wc->state = CURLWC_INIT;
return CURLE_OK;
}
void Curl_wildcard_dtor(struct WildcardData **wcp)
{
struct WildcardData *wc = *wcp;
if(!wc)
return;
if(wc->dtor) {
wc->dtor(wc->ftpwc);
wc->dtor = ZERO_NULL;
wc->ftpwc = NULL;
}
DEBUGASSERT(wc->ftpwc == NULL);
Curl_llist_destroy(&wc->filelist, NULL);
free(wc->path);
wc->path = NULL;
free(wc->pattern);
wc->pattern = NULL;
wc->state = CURLWC_INIT;
free(wc);
*wcp = NULL;
}
#endif /* if disabled */

View File

@ -1,69 +0,0 @@
#ifndef HEADER_CURL_WILDCARD_H
#define HEADER_CURL_WILDCARD_H
/***************************************************************************
* _ _ ____ _
* Project ___| | | | _ \| |
* / __| | | | |_) | |
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
* Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
* are also available at https://curl.se/docs/copyright.html.
*
* You may opt to use, copy, modify, merge, publish, distribute and/or sell
* copies of the Software, and permit persons to whom the Software is
* furnished to do so, under the terms of the COPYING file.
*
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
* SPDX-License-Identifier: curl
*
***************************************************************************/
#include "curl_setup.h"
#ifndef CURL_DISABLE_FTP
#include <curl/curl.h>
#include "llist.h"
/* list of wildcard process states */
typedef enum {
CURLWC_CLEAR = 0,
CURLWC_INIT = 1,
CURLWC_MATCHING, /* library is trying to get list of addresses for
downloading */
CURLWC_DOWNLOADING,
CURLWC_CLEAN, /* deallocate resources and reset settings */
CURLWC_SKIP, /* skip over concrete file */
CURLWC_ERROR, /* error cases */
CURLWC_DONE /* if is wildcard->state == CURLWC_DONE wildcard loop
will end */
} wildcard_states;
typedef void (*wildcard_dtor)(void *ptr);
/* struct keeping information about wildcard download process */
struct WildcardData {
char *path; /* path to the directory, where we trying wildcard-match */
char *pattern; /* wildcard pattern */
struct Curl_llist filelist; /* llist with struct Curl_fileinfo */
struct ftp_wc *ftpwc; /* pointer to FTP wildcard data */
wildcard_dtor dtor;
unsigned char state; /* wildcard_states */
};
CURLcode Curl_wildcard_init(struct WildcardData *wc);
void Curl_wildcard_dtor(struct WildcardData **wcp);
struct Curl_easy;
#else
/* FTP is disabled */
#define Curl_wildcard_dtor(x)
#endif
#endif /* HEADER_CURL_WILDCARD_H */