forked from Imagelibrary/rtems
ftpfs: Format
This commit is contained in:
@@ -5,10 +5,11 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2009-2012
|
* Copyright (c) 2009-2012 embedded brains GmbH.
|
||||||
|
*
|
||||||
* embedded brains GmbH
|
* embedded brains GmbH
|
||||||
* Obere Lagerstr. 30
|
* Obere Lagerstr. 30
|
||||||
* D-82178 Puchheim
|
* 82178 Puchheim
|
||||||
* Germany
|
* Germany
|
||||||
* <rtems@embedded-brains.de>
|
* <rtems@embedded-brains.de>
|
||||||
*
|
*
|
||||||
@@ -19,8 +20,6 @@
|
|||||||
* 82178 Puchheim, Germany
|
* 82178 Puchheim, Germany
|
||||||
* <Thomas.Doerfler@imd-systems.de>
|
* <Thomas.Doerfler@imd-systems.de>
|
||||||
*
|
*
|
||||||
* Modified by Sebastian Huber <sebastian.huber@embedded-brains.de>.
|
|
||||||
*
|
|
||||||
* This code has been created after closly inspecting "tftpdriver.c" from Eric
|
* This code has been created after closly inspecting "tftpdriver.c" from Eric
|
||||||
* Norum.
|
* Norum.
|
||||||
*
|
*
|
||||||
@@ -818,8 +817,8 @@ typedef enum {
|
|||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
rtems_ftpfs_pasv_state state;
|
rtems_ftpfs_pasv_state state;
|
||||||
uint8_t data [6];
|
|
||||||
size_t index;
|
size_t index;
|
||||||
|
uint8_t data [6];
|
||||||
} rtems_ftpfs_pasv_entry;
|
} rtems_ftpfs_pasv_entry;
|
||||||
|
|
||||||
static void rtems_ftpfs_pasv_parser(
|
static void rtems_ftpfs_pasv_parser(
|
||||||
@@ -828,37 +827,38 @@ static void rtems_ftpfs_pasv_parser(
|
|||||||
void *arg
|
void *arg
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
rtems_ftpfs_pasv_entry *e = arg;
|
rtems_ftpfs_pasv_entry *pe = arg;
|
||||||
size_t i = 0;
|
size_t i = 0;
|
||||||
|
|
||||||
for (i = 0; i < len; ++i) {
|
for (i = 0; i < len; ++i) {
|
||||||
int c = buf [i];
|
int c = buf [i];
|
||||||
|
|
||||||
switch (e->state) {
|
switch (pe->state) {
|
||||||
case RTEMS_FTPFS_PASV_START:
|
case RTEMS_FTPFS_PASV_START:
|
||||||
if (!isdigit(c)) {
|
if (!isdigit(c)) {
|
||||||
e->state = RTEMS_FTPFS_PASV_JUNK;
|
pe->state = RTEMS_FTPFS_PASV_JUNK;
|
||||||
e->index = 0;
|
pe->index = 0;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case RTEMS_FTPFS_PASV_JUNK:
|
case RTEMS_FTPFS_PASV_JUNK:
|
||||||
if (isdigit(c)) {
|
if (isdigit(c)) {
|
||||||
e->state = RTEMS_FTPFS_PASV_DATA;
|
pe->state = RTEMS_FTPFS_PASV_DATA;
|
||||||
e->data [e->index] = (uint8_t) (c - '0');
|
pe->data [pe->index] = (uint8_t) (c - '0');
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case RTEMS_FTPFS_PASV_DATA:
|
case RTEMS_FTPFS_PASV_DATA:
|
||||||
if (isdigit(c)) {
|
if (isdigit(c)) {
|
||||||
e->data [e->index] = (uint8_t) (e->data [e->index] * 10 + c - '0');
|
pe->data [pe->index] =
|
||||||
|
(uint8_t) (pe->data [pe->index] * 10 + c - '0');
|
||||||
} else if (c == ',') {
|
} else if (c == ',') {
|
||||||
++e->index;
|
++pe->index;
|
||||||
if (e->index < sizeof(e->data)) {
|
if (pe->index < sizeof(pe->data)) {
|
||||||
e->data [e->index] = 0;
|
pe->data [pe->index] = 0;
|
||||||
} else {
|
} else {
|
||||||
e->state = RTEMS_FTPFS_PASV_DONE;
|
pe->state = RTEMS_FTPFS_PASV_DONE;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
e->state = RTEMS_FTPFS_PASV_DONE;
|
pe->state = RTEMS_FTPFS_PASV_DONE;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
@@ -881,10 +881,9 @@ static int rtems_ftpfs_open_data_connection_passive(
|
|||||||
struct sockaddr_in sa;
|
struct sockaddr_in sa;
|
||||||
uint32_t data_address = 0;
|
uint32_t data_address = 0;
|
||||||
uint16_t data_port = 0;
|
uint16_t data_port = 0;
|
||||||
|
rtems_ftpfs_pasv_entry pe;
|
||||||
|
|
||||||
rtems_ftpfs_pasv_entry pe = {
|
memset(&pe, 0, sizeof(pe));
|
||||||
.state = RTEMS_FTPFS_PASV_START
|
|
||||||
};
|
|
||||||
|
|
||||||
/* Send PASV command */
|
/* Send PASV command */
|
||||||
reply = rtems_ftpfs_send_command_with_parser(
|
reply = rtems_ftpfs_send_command_with_parser(
|
||||||
@@ -898,8 +897,10 @@ static int rtems_ftpfs_open_data_connection_passive(
|
|||||||
if (reply != RTEMS_FTPFS_REPLY_2) {
|
if (reply != RTEMS_FTPFS_REPLY_2) {
|
||||||
return ENOTSUP;
|
return ENOTSUP;
|
||||||
}
|
}
|
||||||
data_address = ((uint32_t)(pe.data [0]) << 24) + ((uint32_t)(pe.data [1]) << 16)
|
data_address = ((uint32_t)(pe.data [0]) << 24)
|
||||||
+ ((uint32_t)(pe.data [2]) << 8) + ((uint32_t)(pe.data [3]));
|
+ ((uint32_t)(pe.data [1]) << 16)
|
||||||
|
+ ((uint32_t)(pe.data [2]) << 8)
|
||||||
|
+ ((uint32_t)(pe.data [3]));
|
||||||
data_port = (uint16_t) ((pe.data [4] << 8) + pe.data [5]);
|
data_port = (uint16_t) ((pe.data [4] << 8) + pe.data [5]);
|
||||||
rtems_ftpfs_create_address(&sa, htonl(data_address), htons(data_port));
|
rtems_ftpfs_create_address(&sa, htonl(data_address), htons(data_port));
|
||||||
DEBUG_PRINTF(
|
DEBUG_PRINTF(
|
||||||
|
|||||||
Reference in New Issue
Block a user