![]() |
![]() |
#1 |
May 2014
3×11 Posts |
![]()
The askStr() function in Linux / OS X console builds work differently
than a GUI textbox. Specifically it doesn't yet allow inputting empty strings (really!). If you press Enter without typing anything (not even a whitespace), askStr() will assume the default value that has been present in the original buffer. Since we cannot have empty fields in here. Questions about optional text fields have to be worked around. This patch changes these: 1. In the user ID question, the user will now have to explicity type "ANONYMOUS" to run anonymously. The "ANONYMOUS" value will be the default upon the first time the user starts mprime, so that the flow isn't changed for anonymous people setting up mprime. What's added is that user may now re-login as ANONYMOUS by explicitly typing the name. 2. A "Use a proxy server?" Yes/No question has been added before asking the proxy host name. This now allows users to disable proxy server. Previously user will have to edit the INI to remove the ProxyHost field. 3. Fix "proxy user name" and "proxy password" prompts' off-by-one. 4. Limit the length of "proxy host name" prompt to 79. Sorry, this is the limit on the get_line() function and the console. And I don't think it's wise to expand the get_line() function buffer to above 80. 5. Ask "Output debug info to prime.log" even when proxy server is disabled. (It didn't ask previously and it's a bug) Code:
diff -r -u -p a/linux/menu.c b/linux/menu.c --- a/linux/menu.c 2016-09-15 10:15:10.000000000 +0800 +++ b/linux/menu.c 2017-03-01 23:33:18.226177357 +0800 @@ -287,20 +287,19 @@ void test_primenet (void) { - int m_primenet, m_dialup; + int m_primenet, m_dialup, m_use_proxy; unsigned long m_proxy_port, m_debug; - char m_userid[21], m_compid[21], m_proxy_host[121]; - char m_proxy_user[51], m_proxy_pwd[51], orig_proxy_pwd[51]; + char m_userid[21], m_compid[21], m_proxy_host[120]; + char m_proxy_user[50], m_proxy_pwd[50], orig_proxy_pwd[50]; unsigned short proxy_port; int update_computer_info, primenet_debug; - char m_username[81], m_userpwd[14]; update_computer_info = FALSE; primenet_debug = IniSectionGetInt (INI_FILE, "PrimeNet", "Debug", 0); m_primenet = USE_PRIMENET; - if (strcmp (USERID, "ANONYMOUS") == 0) - m_userid[0] = 0; + if (USERID[0] == 0) + strcpy (m_userid, "ANONYMOUS"); else strcpy (m_userid, USERID); strcpy (m_compid, COMPID); @@ -313,18 +312,26 @@ void test_primenet (void) askYN ("Use PrimeNet to get work and report results", &m_primenet); if (!m_primenet) goto done; - outputLongLine ("\nYou must first create your user ID at mersenne.org or leave user ID blank to run anonymously. See the readme.txt file for details.\n"); - askStr ("Optional user ID", m_userid, 20); + printf ("\nCreate a user account at https://mersenne.org/update/\n" + "You may join GIMPS with anonymous ID but it's not recommended.\n" + "See the readme.txt file for details.\n"); + askStr ("User ID, or \"ANONYMOUS\"", m_userid, 20); askStr ("Optional computer name", m_compid, 20); askYN ("Computer uses a dial-up connection to the Internet", &m_dialup); - askStr ("Optional proxy host name", m_proxy_host, 120); - if (!m_proxy_host[0]) goto done; - - askNum ("Proxy port number", &m_proxy_port, 1, 65535); - askStr ("Optional proxy user name", m_proxy_user, 50); - askStr ("Optional proxy password", m_proxy_pwd, 50); + askYN ("Use a proxy server", &m_use_proxy); + if (m_use_proxy) { + /* Sorry but we can only ask for up to 79 chars for this */ + /* field on the console. User that needs a longer host name */ + /* have to write it in INI directly. */ + askStr ("Proxy host name", m_proxy_host, 79); + askNum ("Proxy port number", &m_proxy_port, 1, 65535); + askStr ("Optional proxy user name", m_proxy_user, 49); + askStr ("Optional proxy password", m_proxy_pwd, 49); + } else { + m_proxy_host[0] = 0; + } askNum ("Output debug info to prime.log (0=none, 1=some, 2=lots)", &m_debug, 0, 2); done: if (askOkCancel ()) { @@ -348,9 +355,6 @@ void test_primenet (void) m_debug); } - if (m_userid[0] == 0) - strcpy (m_userid, "ANONYMOUS"); - if (strcmp (USERID, m_userid) != 0) { strcpy (USERID, m_userid); sanitizeString (USERID); |
![]() |
![]() |
![]() |
#2 |
P90 years forever!
Aug 2002
Yeehaw, FL
22·5·397 Posts |
![]()
Fixed pretty much as suggested.
Note that fields like optional computer name have the same problem, once you've given a value for the computer name you change it to <blank>. |
![]() |
![]() |
![]() |
#3 | |
May 2014
3·11 Posts |
![]() Quote:
Regarding the computer name, I'm not sure how much effect it can have by setting it to blank, and I think having a Yes/No question before prompting the computer name would be overkill, hence I have no fix suggestions for now. |
|
![]() |
![]() |
![]() |
Thread Tools | |
![]() |
||||
Thread | Thread Starter | Forum | Replies | Last Post |
GQQ: a "deterministic" "primality" test in O(ln n)^2 | Chair Zhuang | Miscellaneous Math | 21 | 2018-03-26 22:33 |
Aouessare-El Haddouchi-Essaaidi "test": "if Mp has no factor, it is prime!" | wildrabbitt | Miscellaneous Math | 11 | 2015-03-06 08:17 |
"Attention all Windows users: patch your systems now" | cheesehead | Soap Box | 6 | 2012-06-16 18:15 |
P-1 B1/B2 selection with "Test=" vs "Pfactor=" | James Heinrich | Software | 2 | 2005-03-19 21:58 |
Primenet individual account report "current iteration" | Peter Nelson | PrimeNet | 7 | 2005-02-15 00:12 |