diff options
author | Simon Quigley <tsimonq2@ubuntu.com> | 2017-11-25 13:35:48 -0600 |
---|---|---|
committer | Simon Quigley <tsimonq2@ubuntu.com> | 2017-11-25 13:35:48 -0600 |
commit | 628a525ae2961f0461172613a0675dab6754c65e (patch) | |
tree | 9c16631a75cf703771196cabf274ee9eef9723d8 /modules/network | |
parent | ab16195359ad146263dbd7b5ea2d94316caee627 (diff) | |
parent | 11e616945340e87a1f567ab92e6dfac3068875b1 (diff) |
Update upstream source from tag 'upstream/0.5.1+git20171103'
Update to upstream version '0.5.1+git20171103'
with Debian dir 12de6f1245697675c1d76dc1085c08844d715cb0
Diffstat (limited to 'modules/network')
-rw-r--r-- | modules/network/net.c | 27 | ||||
-rw-r--r-- | modules/network/samba.c | 50 |
2 files changed, 37 insertions, 40 deletions
diff --git a/modules/network/net.c b/modules/network/net.c index 99a5e616..a75cf8b6 100644 --- a/modules/network/net.c +++ b/modules/network/net.c @@ -306,24 +306,19 @@ remove_net_devices(gpointer key, gpointer value, gpointer data) #ifdef HAS_LINUX_WE const char *wifi_bars(int signal, int noise) { - float quality; + signal = -signal; - if (signal <= -100) - quality = 0.0; - else if (signal >= -50) - quality = 1.0; - else - quality = (2.0 * (signal + 100.0)) / 100.0; - - if (quality < 0.20) - return "▰▱▱▱▱"; - if (quality < 0.40) - return "▰▰▱▱▱"; - if (quality < 0.60) - return "▰▰▰▱▱"; - if (quality < 0.80) + if (signal > 80) + return "▰▰▰▰▰"; + if (signal > 55) return "▰▰▰▰▱"; - return "▰▰▰▰▰"; + if (signal > 30) + return "▰▰▰▱▱"; + if (signal > 15) + return "▰▰▱▱▱"; + if (signal > 5) + return "▰▱▱▱▱"; + return "▱▱▱▱▱"; } #endif diff --git a/modules/network/samba.c b/modules/network/samba.c index 71ba6ab6..7e8dc46c 100644 --- a/modules/network/samba.c +++ b/modules/network/samba.c @@ -31,7 +31,7 @@ scan_samba(void) { gchar *str; gsize length; - + if (smb_shares_list) { g_free(smb_shares_list); smb_shares_list = g_strdup(""); @@ -41,7 +41,7 @@ scan_samba(void) &str, &length, NULL)) { shell_status_update("Scanning SAMBA shares..."); scan_samba_from_string(str, length); - g_free(str); + g_free(str); } scan_samba_usershares(); @@ -51,32 +51,34 @@ void scan_samba_usershares(void) { FILE *usershare_list; - - if ((usershare_list = popen("net usershare list", "r"))) { - char buffer[512]; - + gboolean spawned; + int status; + gchar *out, *err, *p, *next_nl; + gchar *usershare, *cmdline; + gsize length; + + spawned = g_spawn_command_line_sync("net usershare list", + &out, &err, &status, NULL); + + if (spawned && status == 0 && out != NULL) { shell_status_update("Scanning SAMBA user shares..."); - - while (fgets(buffer, 512, usershare_list)) { - gchar *usershare, *cmdline; - gsize length; - + p = out; + while(next_nl = strchr(p, '\n')) { cmdline = g_strdup_printf("net usershare info '%s'", - strend(buffer, '\n')); + strend(p, '\n')); if (g_spawn_command_line_sync(cmdline, - &usershare, NULL, - NULL, NULL)) { + &usershare, NULL, NULL, NULL)) { length = strlen(usershare); scan_samba_from_string(usershare, length); g_free(usershare); } - g_free(cmdline); - + shell_status_pulse(); + p = next_nl + 1; } - - pclose(usershare_list); + g_free(out); + g_free(err); } } @@ -87,13 +89,13 @@ scan_samba_from_string(gchar *str, gsize length) GError *error = NULL; gchar **groups; gint i = 0; - + keyfile = g_key_file_new(); - + gchar *_smbconf = str; for (; *_smbconf; _smbconf++) if (*_smbconf == ';') *_smbconf = '\0'; - + if (!g_key_file_load_from_data(keyfile, str, length, 0, &error)) { smb_shares_list = g_strdup("Cannot parse smb.conf=\n"); if (error) @@ -112,12 +114,12 @@ scan_samba_from_string(gchar *str, gsize length) groups[i], path); g_free(path); } - + i++; } - + g_strfreev(groups); - + cleanup: g_key_file_free(keyfile); } |