CFE-2986: Added getdir command to cf-net, copies directory and files#6049
CFE-2986: Added getdir command to cf-net, copies directory and files#6049SimonThalvorsen wants to merge 1 commit intocfengine:masterfrom
Conversation
f7cebad to
40a6c09
Compare
larsewi
left a comment
There was a problem hiding this comment.
It would be nicer if we extended cf-net get to get both files and directories, instead of having two separate sub-commands. Please investigate how rsync does this and try to do it in a similar way here.
@larsewi on the other hand, cf-net was written mainly as a protocol testing tool, and the commands mirror their protocol command names. If the There is also some advantage to not being too dynamic with this stuff. If you make a CLI that forces the user to specify if they are copying a file or a folder, you can prevent some annoying / confusing situations. We could for example make a new subcommand, |
40a6c09 to
2bd2729
Compare
larsewi
left a comment
There was a problem hiding this comment.
Please break this up a little. Maybe a recursive solution would be more elegant given that it is a recursive problem.
cf-net/cf-net.c
Outdated
| filedata->print_stats = opts->print_stats; | ||
|
|
||
| filedata->ret = ProtocolStatGet(conn, filedata->remote_file, | ||
| filedata->local_file, 0644, filedata->print_stats); |
There was a problem hiding this comment.
Maybe you should use the remote file permissions (available from the ProtocolStat) instead?
cf-net/cf-net.c
Outdated
| char curr_dir[PATH_MAX]; | ||
| snprintf(curr_dir, sizeof(curr_dir), "%s/%s", local_dir, curr); | ||
|
|
||
| GetFileData *filedata = calloc(1, sizeof(GetFileData)); |
There was a problem hiding this comment.
This does not need to be heap allocated
cf-net/cf-net.c
Outdated
| continue; | ||
| } | ||
|
|
||
| snprintf(filedata->local_file, PATH_MAX, "%s", curr_dir); |
There was a problem hiding this comment.
Please check for truncation on all the calls to snprintf
| if (specified_path) | ||
| { |
There was a problem hiding this comment.
Some inconsistent indentation here
cf-net/cf-net.c
Outdated
| return invalid_command("getdir"); | ||
| break; |
There was a problem hiding this comment.
Unreachable break after return
cf-net/cf-net.c
Outdated
| if (local_dir != NULL) | ||
| { | ||
| Log(LOG_LEVEL_INFO, | ||
| "Warning: multiple occurences of -o in command, "\ |
There was a problem hiding this comment.
| "Warning: multiple occurences of -o in command, "\ | |
| "Warning: multiple occurrences of -o in command, "\ |
2bd2729 to
e9f4cb3
Compare
| Log(LOG_LEVEL_ERR, "Failed to get remote file: %s:%s", | ||
| conn->this_server, remote_path); | ||
| return false; | ||
| } |
Check notice
Code scanning / CodeQL
Pointer argument is dereferenced without checking for NULL Note
| } | ||
|
|
||
| // Helper: Create local directory path | ||
| static bool create_local_dir(const char *local_base, const char *subdir, |
Check notice
Code scanning / CodeQL
Pointer argument is dereferenced without checking for NULL Note
Ticket: CFE-2986 Changelog: Title Signed-off-by: Simon Halvorsen <simon.halvorsen@northern.tech>
e9f4cb3 to
5b55d16
Compare
Ticket: CFE-2986
Changelog: Title