don't allocate char[PATH_MAX] for each file

This commit makes struct path allocation use strndup().
It reduices the memory footprint for struct path per file (issue #8).
This commit is contained in:
Ryo Nakamura
2024-01-11 21:23:33 +09:00
parent 5cbf3ad648
commit bba53fab03
3 changed files with 34 additions and 27 deletions

View File

@@ -14,11 +14,11 @@
struct path {
struct list_head list; /* mscp->path_list */
char path[PATH_MAX]; /* file path */
size_t size; /* size of file on this path */
mode_t mode; /* permission */
char *path; /* file path */
size_t size; /* size of file on this path */
mode_t mode; /* permission */
char dst_path[PATH_MAX]; /* copy dst path */
char *dst_path; /* copy dst path */
int state;
lock lock;
@@ -93,6 +93,9 @@ struct path_resolve_args {
int walk_src_path(sftp_session src_sftp, const char *src_path,
struct list_head *path_list, struct path_resolve_args *a);
/* free struct path */
void free_path(struct path *p);
/* copy a chunk. either src_sftp or dst_sftp is not null, and another is null */
int copy_chunk(FILE *msg_fp, struct chunk *c,
sftp_session src_sftp, sftp_session dst_sftp,