examples/net: Fix compilation on Windows (no getline)

Thnaks @vtorri who authored this patch
This commit is contained in:
Vincent Torri 2017-06-20 14:17:09 +09:00 committed by Jean-Philippe Andre
parent 6e33145332
commit d03780fdf9
1 changed files with 60 additions and 50 deletions

View File

@ -466,6 +466,7 @@ _ctl_agent_browser_url(void *data EINA_UNUSED, const Efl_Event *event)
static void static void
_ctl_agent_request_input(void *data EINA_UNUSED, const Efl_Event *event) _ctl_agent_request_input(void *data EINA_UNUSED, const Efl_Event *event)
{ {
char buf[100];
Eo *ctl = event->object; Eo *ctl = event->object;
Efl_Net_Control_Agent_Request_Input *ri = event->info; Efl_Net_Control_Agent_Request_Input *ri = event->info;
Eina_List *n; Eina_List *n;
@ -476,7 +477,6 @@ _ctl_agent_request_input(void *data EINA_UNUSED, const Efl_Event *event)
char *ssid = NULL; char *ssid = NULL;
char *wps = NULL; char *wps = NULL;
Eina_Slice ssid_slice = { }; Eina_Slice ssid_slice = { };
ssize_t r;
size_t len; size_t len;
printf("INFO: Needs agent input!\n"); printf("INFO: Needs agent input!\n");
@ -491,50 +491,56 @@ _ctl_agent_request_input(void *data EINA_UNUSED, const Efl_Event *event)
if (ri->fields & EFL_NET_CONTROL_AGENT_REQUEST_INPUT_FIELD_NAME) if (ri->fields & EFL_NET_CONTROL_AGENT_REQUEST_INPUT_FIELD_NAME)
{ {
printf("INFO: Name="); fflush(stdout); printf("INFO: Name="); fflush(stdout);
len = 0; if ((name = fgets(buf, sizeof(buf), stdin)) != NULL)
r = getline(&name, &len, stdin);
if ((r > 1) && (name[r - 1] == '\n'))
{ {
name[r - 1] = '\0'; len = strlen(name);
} if (name[len - 1] == '\n')
else {
{ name[len - 1] = '\0';
free(name); }
name = NULL; else
{
free(name);
name = NULL;
}
} }
} }
if (ri->fields & EFL_NET_CONTROL_AGENT_REQUEST_INPUT_FIELD_SSID) if (ri->fields & EFL_NET_CONTROL_AGENT_REQUEST_INPUT_FIELD_SSID)
{ {
printf("INFO: SSID="); fflush(stdout); printf("INFO: SSID="); fflush(stdout);
len = 0; if ((ssid = fgets(buf, sizeof(buf), stdin)) != NULL)
r = getline(&ssid, &len, stdin);
if ((r > 1) && (ssid[r - 1] == '\n'))
{ {
ssid[r - 1] = '\0'; len = strlen(ssid);
ssid_slice.mem = ssid; if (ssid[len - 1] == '\n')
ssid_slice.len = r - 1; {
} ssid[len - 1] = '\0';
else ssid_slice.mem = ssid;
{ ssid_slice.len = len - 1;
free(ssid); }
ssid = NULL; else
{
free(ssid);
ssid = NULL;
}
} }
} }
if (ri->fields & EFL_NET_CONTROL_AGENT_REQUEST_INPUT_FIELD_USERNAME) if (ri->fields & EFL_NET_CONTROL_AGENT_REQUEST_INPUT_FIELD_USERNAME)
{ {
printf("INFO: Username="); fflush(stdout); printf("INFO: Username="); fflush(stdout);
len = 0; if ((username = fgets(buf, sizeof(buf), stdin)) != NULL)
r = getline(&username, &len, stdin);
if ((r > 1) && (username[r - 1] == '\n'))
{ {
username[r - 1] = '\0'; len = strlen(username);
} if (username[len - 1] == '\n')
else {
{ username[len - 1] = '\0';
free(username); }
username = NULL; else
{
free(username);
username = NULL;
}
} }
} }
@ -545,34 +551,38 @@ _ctl_agent_request_input(void *data EINA_UNUSED, const Efl_Event *event)
else else
printf("INFO: Passphrase="); printf("INFO: Passphrase=");
fflush(stdout); fflush(stdout);
len = 0; if ((passphrase = fgets(buf, sizeof(buf), stdin)) != NULL)
r = getline(&passphrase, &len, stdin);
if ((r > 1) && (passphrase[r - 1] == '\n'))
{ {
passphrase[r - 1] = '\0'; len = strlen(passphrase);
} if (passphrase[len - 1] == '\n')
else {
{ passphrase[len - 1] = '\0';
free(passphrase); }
passphrase = NULL; else
{
free(passphrase);
passphrase = NULL;
}
} }
} }
if (ri->fields & EFL_NET_CONTROL_AGENT_REQUEST_INPUT_FIELD_WPS) if (ri->fields & EFL_NET_CONTROL_AGENT_REQUEST_INPUT_FIELD_WPS)
{ {
printf("INFO: WPS (use a single dot, '.', for pushbutton)="); fflush(stdout); printf("INFO: WPS (use a single dot, '.', for pushbutton)="); fflush(stdout);
len = 0; if ((wps = fgets(buf, sizeof(buf), stdin)) != NULL)
r = getline(&wps, &len, stdin);
if ((r > 1) && (wps[r - 1] == '\n'))
{ {
wps[r - 1] = '\0'; len = strlen(wps);
if ((r == 2) && (wps[0] == '.')) if (wps[len - 1] == '\n')
wps[0] = '\0'; /* API uses empty string for pushbutton */ {
} wps[len - 1] = '\0';
else if ((len == 2) && (wps[0] == '.'))
{ wps[0] = '\0'; /* API uses empty string for pushbutton */
free(wps); }
wps = NULL; else
{
free(wps);
wps = NULL;
}
} }
} }
} }