8 #include <sys/socket.h>
36 bool receive_read_result(
int sockd,
char** readed_data,
size_t* readed) {
47 char* data_position = NULL;
48 *readed = strtol(data, &data_position, 10);
50 *readed_data = calloc(*readed + 1,
sizeof(
char));
51 (*readed_data)[*readed] =
'\0';
52 memcpy(*readed_data, data_position, *readed);
81 if (!
send_data(sockd, path, strlen(path))) {
92 if (!
send_data(sockd, path, strlen(path))) {
104 if (!
send_data(sockd, path, strlen(path))) {
116 if (!
send_data(sockd, path, strlen(path))) {
128 char string_buffer[1024];
129 size_t string_size = sprintf(string_buffer,
"\t%d", fd);
131 if (!
send_data(sockd, string_buffer, strlen(string_buffer))) {
143 char string_buffer[1024];
144 size_t string_size = sprintf(string_buffer,
"\t%d\t%d", opened_fd, size);
146 if (!
send_data(sockd, string_buffer, strlen(string_buffer))) {
158 char string_buffer[size + 128];
159 size_t string_size = sprintf(string_buffer,
"\t%d\t%zu\t%s", fd, size, data);
160 if (!
send_data(sockd, string_buffer, strlen(string_buffer))) {
172 char string_buffer[1024];
173 size_t string_size = sprintf(string_buffer,
"\t%d\t%zu", fd, size);
175 if (!
send_data(sockd, string_buffer, strlen(string_buffer))) {
182 bool result = receive_read_result(sockd, &data, &readed);
184 if (result ==
false) {
188 printf(
"Total read:%zu\n%s\n", readed, data);
200 int descriptor = open(path, O_RDONLY);
201 if (descriptor == -1) {
202 fprintf(stderr,
"Can't read file with data. Abort!\n");
206 char* buffer = (
char*) calloc(size,
sizeof(
char));
212 fprintf(stderr,
"Can't read file with data. Abort!\n");
224 char string_buffer[1024];
225 size_t string_size = sprintf(string_buffer,
"\t%d\t%zu", fd, size);
227 if (!
send_data(sockd, string_buffer, strlen(string_buffer))) {
234 bool result = receive_read_result(sockd, &data, &readed);
236 if (result ==
false) {
240 int fd_to_write = open(path, O_RDWR | O_CREAT);
241 if (fd_to_write == -1) {
242 fprintf(stderr,
"Can't open file to write. Abort!\n");
246 if (
write_while(fd_to_write, data, readed) == -1) {
247 fprintf(stderr,
"Can't write to file to write. Abort!\n");
Contains handlers for commands from server.
bool send_close_command(int sockd, int fd)
bool send_mkdir_command(int sockd, const char *path)
bool send_read_command(int sockd, int fd, size_t size)
bool send_lseek_command(int sockd, int fd, int size)
bool send_command(int sockd, enum Command command)
int read_while(int fd, char *buffer, size_t to_read)
Properly reading from memory.
bool send_quit_command(int sockd)
bool send_read_fs_command(int sockd)
bool send_open_command(int sockd, const char *path)
int write_while(int fd, const char *buffer, size_t to_write)
Properly writing to memory.
bool send_data(int sockd, char *data, size_t size)
bool send_write_command(int sockd, int fd, char *data, size_t size)
bool send_write_from_command(int sockd, int fd, const char *path)
ssize_t get_file_size(const char *path_to_file)
Get size of file.
bool receive_result(int sockd, int output_fd)
bool receive_data(int sockd, char **data, size_t *size)
bool send_init_command(int sockd)
bool send_ls_command(int sockd, const char *path)
bool send_help_command(int sockd)
bool send_read_to_command(int sockd, int fd, const char *path, size_t size)
bool send_touch_command(int sockd, const char *path)