diff options
Diffstat (limited to 'login.h')
-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 |