diff options
| -rw-r--r-- | login.h | 35 | 
1 files changed, 25 insertions, 10 deletions
@@ -9,16 +9,31 @@ static inline void login(const char *username, const char *password,  		void (*handler)(interchange_response *),  		void (*callback)(void *))  { -	request(handler, callback, (const char *[][2]){ -			"mv_username", username, -			"mv_password", password, -			"mv_click", click, -			"mv_nextpage", nextpage, -			"mv_successpage", successpage, -			"mv_failpage", failpage, -			"mv_verify", verify, -			NULL -			}, "%s", "process"); +	const char *body[(verify ? 1 : 0) + (successpage ? 1: 0) +		+ (failpage ? 1 : 0) + 5][2]; +	body[0][0] = "mv_username"; +	body[0][1] = username; +	body[1][0] = "mv_password"; +	body[1][1] = password; +	body[2][0] = "mv_click"; +	body[2][1] = click; +	body[3][0] = "mv_nextpage"; +	body[3][1] = nextpage; +	size_t i = 4; +	if (successpage) { +		body[i][0] = "mv_successpage"; +		body[i++][1] = successpage; +	} +	if (failpage) { +		body[i][0] = "mv_failpage"; +		body[i++][1] = failpage; +	} +	if (verify) { +		body[i][0] = "mv_verify"; +		body[i++][1] = verify; +	} +	body[i][0] = NULL; +	request(handler, callback, body, "%s", "process");  }  #endif  |