Hello community,
here is the log from the commit of package linuxrc
checked in at Mon Oct 16 19:15:52 CEST 2006.
--------
--- linuxrc/linuxrc.changes 2006-10-02 13:17:47.000000000 +0200
+++ /mounts/work_src_done/STABLE/linuxrc/linuxrc.changes 2006-10-16 18:41:18.000000000 +0200
@@ -1,0 +2,8 @@
+Mon Oct 16 18:41:15 CEST 2006 - snwint@suse.de
+
+- mark loaded/loadable modules differently in module selection dialog
+- fixed drawing bug in too small windows
+- better network device selection
+- basic wlan support
+
+-------------------------------------------------------------------
Old:
----
linuxrc-2.1.5.tar.bz2
New:
----
linuxrc-2.1.6.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ linuxrc.spec ++++++
--- /var/tmp/diff_new_pack.YWrQs9/_old 2006-10-16 19:15:42.000000000 +0200
+++ /var/tmp/diff_new_pack.YWrQs9/_new 2006-10-16 19:15:42.000000000 +0200
@@ -1,5 +1,5 @@
#
-# spec file for package linuxrc (Version 2.1.5)
+# spec file for package linuxrc (Version 2.1.6)
#
# Copyright (c) 2006 SUSE LINUX Products GmbH, Nuernberg, Germany.
# This file and all modifications and additions to the pristine
@@ -16,9 +16,9 @@
Group: System/Boot
Autoreqprov: on
Summary: SUSE Installation Program
-Version: 2.1.5
+Version: 2.1.6
Release: 1
-Source: linuxrc-2.1.5.tar.bz2
+Source: linuxrc-2.1.6.tar.bz2
BuildRoot: %{_tmppath}/%{name}-%{version}-build
%description
@@ -53,6 +53,11 @@
%doc linuxrc.html
%changelog -n linuxrc
+* Mon Oct 16 2006 - snwint@suse.de
+- mark loaded/loadable modules differently in module selection dialog
+- fixed drawing bug in too small windows
+- better network device selection
+- basic wlan support
* Mon Oct 02 2006 - snwint@suse.de
- cdrom install works again
- allow network config in 'exec' scheme
++++++ linuxrc-2.1.5.tar.bz2 -> linuxrc-2.1.6.tar.bz2 ++++++
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/linuxrc-2.1.5/Changelog new/linuxrc-2.1.6/Changelog
--- old/linuxrc-2.1.5/Changelog 2006-10-02 13:17:09.000000000 +0200
+++ new/linuxrc-2.1.6/Changelog 2006-10-13 17:11:48.000000000 +0200
@@ -1,3 +1,9 @@
+13/10/2006: v2.1.6
+ - mark loaded/loadable modules differently in module selection dialog
+ - fixed drawing bug in too small windows
+ - better network device selection
+ - basic wlan support
+
2/10/2006: v2.1.5
- cdrom install works again
- allow network config in 'exec' scheme
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/linuxrc-2.1.5/VERSION new/linuxrc-2.1.6/VERSION
--- old/linuxrc-2.1.5/VERSION 2006-10-02 12:50:37.000000000 +0200
+++ new/linuxrc-2.1.6/VERSION 2006-10-11 16:44:51.000000000 +0200
@@ -1 +1 @@
-2.1.5
+2.1.6
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/linuxrc-2.1.5/dialog.c new/linuxrc-2.1.6/dialog.c
--- old/linuxrc-2.1.5/dialog.c 2006-03-10 17:45:27.000000000 +0100
+++ new/linuxrc-2.1.6/dialog.c 2006-10-13 14:41:04.000000000 +0200
@@ -118,6 +118,11 @@
{ di_osa_lcs, TXT_OSA_LCS },
{ di_osa_qdio, TXT_OSA_QDIO },
+ { di_wlan_open, 0, "No Authentication" },
+ { di_wlan_wep_o, 0, "WEP - Open" },
+ { di_wlan_wep_r, 0, "WEP - Shared Key" },
+ { di_wlan_wpa, 0, "WPA-PSK" },
+
};
@@ -1619,7 +1624,7 @@
s++;
item_list[i].tag.head = 1;
}
- utf8_strwcpy(item_list[i].text, s, width);
+ utf8_strwcpy(item_list[i].text, s, width - 1);
item_list[i].func = func;
if(align == align_center) {
util_center_text(item_list[i].text, width);
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/linuxrc-2.1.5/dialog.h new/linuxrc-2.1.6/dialog.h
--- old/linuxrc-2.1.5/dialog.h 2006-02-03 12:46:22.000000000 +0100
+++ new/linuxrc-2.1.6/dialog.h 2006-10-13 14:34:47.000000000 +0200
@@ -102,6 +102,11 @@
di_osa_lcs,
di_osa_qdio,
+ di_wlan_open,
+ di_wlan_wep_o,
+ di_wlan_wep_r,
+ di_wlan_wpa,
+
} dia_item_t;
typedef enum {
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/linuxrc-2.1.5/file.c new/linuxrc-2.1.6/file.c
--- old/linuxrc-2.1.5/file.c 2006-09-25 14:38:15.000000000 +0200
+++ new/linuxrc-2.1.6/file.c 2006-10-12 13:58:42.000000000 +0200
@@ -340,8 +340,10 @@
return "";
}
-/* compare strings, ignoring '-' and '_' characters in strings not starting
- with '_' */
+/*
+ * Compare strings, ignoring '-', '_', and '.' characters in strings not
+ * starting with '_'.
+ */
static int strcasecmpignorestrich(const char* s1, const char* s2)
{
char* str1 = strdup(s1);
@@ -352,7 +354,7 @@
/* remove all '-' and '_' */
if(*str1 != '_') {
for(i = 0, s = str1; str1[i]; i++) {
- if(str1[i] != '_' && str1[i] != '-') {
+ if(str1[i] != '_' && str1[i] != '-' && str1[i] != '.') {
*s++ = str1[i];
}
}
@@ -362,7 +364,7 @@
/* remove all '-' and '_' */
if(*str2 != '_') {
for(i = 0, s = str2; str2[i]; i++) {
- if(str2[i] != '_' && str2[i] != '-') {
+ if(str2[i] != '_' && str2[i] != '-' && str2[i] != '.') {
*s++ = str2[i];
}
}
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/linuxrc-2.1.5/global.h new/linuxrc-2.1.6/global.h
--- old/linuxrc-2.1.5/global.h 2006-09-25 14:37:38.000000000 +0200
+++ new/linuxrc-2.1.6/global.h 2006-10-13 15:05:40.000000000 +0200
@@ -180,6 +180,7 @@
unsigned exists:1; /* module really exists */
unsigned dontask:1; /* don't ask for module params */
unsigned detected:1; /* auto-detected */
+ unsigned active:1; /* module loaded */
} module_t;
@@ -202,6 +203,17 @@
nc_none, nc_static, nc_bootp, nc_dhcp
} net_config_t;
+typedef enum {
+ wa_none, wa_open, wa_wep_open, wa_wep_resticted, wa_wpa
+} wlan_auth_t;
+
+/*
+ * keep the values - see wlan_auth_cb()
+ */
+typedef enum {
+ kt_ascii, kt_hex, kt_pass_40, kt_pass_104, kt_pass_wpa
+} key_type_t;
+
/* > 100 and <= 1000 */
#define MAX_UPDATES 1000
@@ -506,6 +518,12 @@
char *module; /* cifs/smb kernel module */
} cifs;
char *dhcpcd; /* dhcpcd parameters (if any) */
+ struct {
+ wlan_auth_t auth; /* open, wep, wpa */
+ char *essid; /* ESSID */
+ char *key; /* wep/wpa key */
+ key_type_t key_type; /* ascii, hex, passphrase */
+ } wlan;
} net;
struct {
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/linuxrc-2.1.5/linuxrc.c new/linuxrc-2.1.6/linuxrc.c
--- old/linuxrc-2.1.5/linuxrc.c 2006-05-11 11:03:10.000000000 +0200
+++ new/linuxrc-2.1.6/linuxrc.c 2006-10-12 13:56:59.000000000 +0200
@@ -778,6 +778,7 @@
config.net.ifconfig = 1;
config.net.setup = NS_DEFAULT;
config.net.nameservers = 1;
+ config.net.nfs_tcp = 1;
config.explode_win = 1;
config.color = 2;
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/linuxrc-2.1.5/module.c new/linuxrc-2.1.6/module.c
--- old/linuxrc-2.1.5/module.c 2006-01-31 17:05:56.000000000 +0100
+++ new/linuxrc-2.1.6/module.c 2006-10-12 12:04:05.000000000 +0200
@@ -291,7 +291,7 @@
static char **items = NULL;
static module_t **mod_items = NULL;
static int mods = 0;
- int i;
+ int i, width;
char buf[256];
if(items) {
@@ -309,11 +309,19 @@
items = calloc(mods + 1, sizeof *items);
mod_items = calloc(mods + 1, sizeof *mod_items);
+ for(width = 0, ml = config.module.list; ml; ml = ml->next) {
+ if(ml->type == type && ml->exists && ml->descr) {
+ i = strlen(ml->name);
+ if(i > width) width = i;
+ }
+ }
+
for(i = 0, ml = config.module.list; ml; ml = ml->next) {
if(ml->type == type && ml->exists && ml->descr) {
- sprintf(buf, "%14s%s%s",
+ sprintf(buf, "%*s%s%s",
+ width,
ml->name,
- *ml->descr ? ml->detected ? " * " : " : " : "", ml->descr
+ *ml->descr ? ml->detected ? ml->active ? " * " : " + " : " : " : "", ml->descr
);
items[i] = strdup(buf);
mod_items[i++] = ml;
@@ -1037,13 +1045,15 @@
hd = hd_list2(hd_data, hw_items, 1);
for(; hd; hd = hd->next) {
- if(
- (di = hd->driver_info) &&
- di->any.type == di_module
- ) {
+ for(di = hd->driver_info; di; di = di->next) {
+ if(di->any.type != di_module) continue;
+
for(sl = di->module.names; sl; sl = sl->next) {
for(ml = config.module.list; ml; ml = ml->next) {
- if(!mod_cmp(ml->name, sl->str)) ml->detected = 1;
+ if(!mod_cmp(ml->name, sl->str)) {
+ ml->detected = 1;
+ ml->active = di->module.active ? 1 : 0;
+ }
}
}
}
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/linuxrc-2.1.5/net.c new/linuxrc-2.1.6/net.c
--- old/linuxrc-2.1.5/net.c 2006-08-30 15:35:29.000000000 +0200
+++ new/linuxrc-2.1.6/net.c 2006-10-16 12:51:33.000000000 +0200
@@ -44,6 +44,8 @@
#define NFS_PORT 2049
#endif
+#include
+
#include "global.h"
#include "text.h"
#include "dialog.h"
@@ -58,8 +60,6 @@
#define NFS_PROGRAM 100003
#define NFS_VERSION 2
-#define MAX_NETDEVICE 64
-
static int net_is_ptp_im = FALSE;
#if !defined(NETWORK_CONFIG)
@@ -81,7 +81,10 @@
#endif
static void if_down(char *dev);
+static int wlan_setup(void);
+static int wlan_auth_cb(dia_item_t di);
+static dia_item_t di_wlan_auth_last = di_none;
/*
* Ask for VNC & SSH password, unless they have already been set.
@@ -997,9 +1000,9 @@
*/
int net_choose_device()
{
- char *items[MAX_NETDEVICE + 1], *s;
- int i, item_cnt, choice;
- char buf[MAX_X];
+ char **items, **item_devs = NULL;
+ int i, max_items = 0, item_cnt, choice, width;
+ char *buf = NULL;
file_t *f0, *f;
slist_t *sl;
static int last_item = 0;
@@ -1020,31 +1023,69 @@
{ "iucv", TXT_NET_IUCV },
{ "hsi", TXT_NET_HSI }
};
+ hd_data_t *hd_data = calloc(1, sizeof *hd_data);
+ hd_t *hd, *hd_cards;
+ hd_t **item_hds = NULL;
if(config.net.device_given) return 0;
- /* re-read - just in case... */
- util_update_netdevice_list(NULL, 1);
+ if(config.manual >= 2) {
+ /* re-read - just in case... */
+ util_update_netdevice_list(NULL, 1);
+
+ for(sl = config.net.devices; sl; sl = sl->next) {
+ if(sl->key) max_items++;
+ }
+
+ items = calloc(max_items + 1, sizeof *items);
+ item_devs = calloc(max_items + 1, sizeof *item_devs);
+
+ f0 = file_read_file("/proc/net/dev", kf_none);
+ if(!f0) return -1;
+
+ for(item_cnt = 0, f = f0; f && item_cnt < max_items; f = f->next) {
+ for(i = 0; i < sizeof net_dev / sizeof *net_dev; i++) {
+ if(strstr(f->key_str, net_dev[i].dev) == f->key_str) {
+ strprintf(&buf, "%-6s : %s", f->key_str, txt_get(net_dev[i].name));
+ item_devs[item_cnt] = strdup(f->key_str);
+ items[item_cnt++] = strdup(buf);
+ break;
+ }
+ }
+ }
- for(item_cnt = 0, sl = config.net.devices; sl; sl = sl->next) {
- if(sl->key) item_cnt++;
+ file_free_file(f0);
}
+ else {
+ hd_data->flags.nowpa = 1;
- f0 = file_read_file("/proc/net/dev", kf_none);
- if(!f0) return -1;
+ hd_cards = hd_list(hd_data, hw_network_ctrl, 1, NULL);
+ for(hd = hd_cards; hd; hd = hd->next) max_items++;
- for(item_cnt = 0, f = f0; f && (unsigned) item_cnt < sizeof items / sizeof *items - 1; f = f->next) {
- for(i = 0; (unsigned) i < sizeof net_dev / sizeof *net_dev; i++) {
- if(strstr(f->key_str, net_dev[i].dev) == f->key_str) {
- sprintf(buf, "%-6s : %s", f->key_str, txt_get(net_dev[i].name));
- items[item_cnt++] = strdup(buf);
- break;
+ items = calloc(max_items + 1, sizeof *items);
+ item_devs = calloc(max_items + 1, sizeof *item_devs);
+ item_hds = calloc(max_items + 1, sizeof *item_hds);
+
+ for(width = 0, hd = hd_cards; hd; hd = hd->next) {
+ if(hd->unix_dev_name) {
+ i = strlen(hd->unix_dev_name);
+ if(i > width) width = i;
}
}
- }
- items[item_cnt] = NULL;
- file_free_file(f0);
+ for(item_cnt = 0, hd = hd_cards; hd; hd = hd->next) {
+ item_hds[item_cnt] = hd;
+ if(hd->unix_dev_name) {
+ item_devs[item_cnt] = strdup(hd->unix_dev_name);
+ }
+ if(hd->unix_dev_name) {
+ strprintf(items + item_cnt++, "%*s : %s", -width, hd->unix_dev_name, hd->model);
+ }
+ else {
+ strprintf(items + item_cnt++, "%s", hd->model);
+ }
+ }
+ }
if(item_cnt == 0) {
dia_message(txt_get(TXT_NO_NETDEVICE), MSGTYPE_ERROR);
@@ -1057,17 +1098,38 @@
if(choice) last_item = choice;
}
+ if(choice > 0 && !item_devs[choice - 1]) {
+ dia_message(txt_get(TXT_NO_NETDEVICE), MSGTYPE_ERROR);
+ choice = -1;
+ }
+
if(choice > 0) {
- s = strchr(items[choice - 1], ' ');
- if(s) *s = 0;
- str_copy(&config.net.device, items[choice - 1]);
- net_is_ptp_im=FALSE;
- if(strstr(config.net.device, "plip") == config.net.device) net_is_ptp_im=TRUE;
- if(strstr(config.net.device, "iucv") == config.net.device) net_is_ptp_im=TRUE;
- if(strstr(config.net.device, "ctc") == config.net.device) net_is_ptp_im=TRUE;
+ str_copy(&config.net.device, item_devs[choice - 1]);
+ net_is_ptp_im = FALSE;
+ if(strstr(config.net.device, "plip") == config.net.device) net_is_ptp_im = TRUE;
+ if(strstr(config.net.device, "iucv") == config.net.device) net_is_ptp_im = TRUE;
+ if(strstr(config.net.device, "ctc") == config.net.device) net_is_ptp_im = TRUE;
+
+ if(item_hds) {
+ hd = item_hds[choice - 1];
+ if(hd->is.wlan) {
+ if(wlan_setup()) choice = -1;
+ }
+ }
}
- for(i = 0; i < item_cnt; i++) free(items[i]);
+ for(i = 0; i < item_cnt; i++) {
+ free(items[i]);
+ if(item_devs) free(item_devs[i]);
+ }
+ free(items);
+ free(item_devs);
+ free(item_hds);
+
+ hd_free_hd_data(hd_data);
+ free(hd_data);
+
+ free(buf);
return choice > 0 ? 0 : -1;
}
@@ -2146,3 +2208,221 @@
}
+/*
+ * 0: ok, 1: failed
+ */
+int wlan_setup()
+{
+ dia_item_t di;
+ dia_item_t items[] = {
+ di_wlan_open,
+ di_wlan_wep_o,
+ di_wlan_wep_r,
+ di_wlan_wpa,
+ di_none
+ };
+
+ di = dia_menu2("WLAN Authentication", 40, wlan_auth_cb, items, di_wlan_auth_last);
+
+ return di == di_none ? 1 : 0;
+}
+
+
+/*
+ * return values:
+ * -1 : abort (aka ESC)
+ * 0 : ok
+ * other: stay in menu
+ */
+int wlan_auth_cb(dia_item_t di)
+{
+ int rc = 1, i, j;
+ char *buf = NULL, *key = NULL, *s;
+ int wep_mode = 0, pass_mode = 0;
+ static char *wep_key_items[] = {
+ "ASCII", "HEX", "Passphrase - 40 bit", "Passphrase - 104 bit",
+ NULL
+ };
+ static char *wpa_key_items[] = {
+ "HEX", "Passphrase",
+ NULL
+ };
+ FILE *f;
+
+ di_wlan_auth_last = di;
+
+ switch(di) {
+ case di_wlan_open:
+ config.net.wlan.auth = wa_open;
+
+ if(dia_input2("ESSID", &config.net.wlan.essid, 30, 0)) {
+ rc = -1;
+ break;
+ }
+
+ strprintf(&buf, "iwconfig %s essid %s'%s'",
+ config.net.device,
+ config.net.wlan.essid ? "-- " : "",
+ config.net.wlan.essid ?: "any"
+ );
+ fprintf(stderr, "%s\n", buf);
+ system_log(buf);
+
+ rc = 0;
+ break;
+
+ case di_wlan_wep_o:
+ wep_mode = 1;
+
+ case di_wlan_wep_r:
+ config.net.wlan.auth = wep_mode ? wa_wep_open : wa_wep_resticted;
+
+ if(dia_input2("ESSID", &config.net.wlan.essid, 30, 0)) {
+ rc = -1;
+ break;
+ }
+
+ i = dia_list("WEP Key Type", 30, NULL, wep_key_items, config.net.wlan.key_type + 1, align_left) - 1;
+
+ if(i < 0) {
+ rc = -1;
+ break;
+ }
+
+ config.net.wlan.key_type = i;
+
+ if(dia_input2("WEP Key", &config.net.wlan.key, 30, 0) || !config.net.wlan.key) {
+ rc = -1;
+ break;
+ }
+
+ switch(config.net.wlan.key_type) {
+ case kt_ascii:
+ strprintf(&key, "s:%s", config.net.wlan.key);
+ break;
+
+ case kt_hex:
+ str_copy(&key, config.net.wlan.key);
+ break;
+
+ case kt_pass_40:
+ pass_mode = 1;
+
+ case kt_pass_104:
+ strprintf(&buf, "lwepgen%s '%s'", pass_mode ? "" : " -s", config.net.wlan.key);
+ f = popen(buf, "r");
+ if(f) {
+ fgets(key = calloc(1, 256), 256, f);
+ if((s = strchr(key, '\n'))) *s = 0;
+ pclose(f);
+ if(!*key) rc = -1;
+ }
+ else {
+ rc = -1;
+ }
+ break;
+
+ default:
+ rc = -1;
+ break;
+
+ }
+
+ if(rc == -1) break;
+
+ strprintf(&buf, "iwconfig %s essid %s'%s'",
+ config.net.device,
+ config.net.wlan.essid ? "-- " : "",
+ config.net.wlan.essid ?: "any"
+ );
+ fprintf(stderr, "%s\n", buf);
+ system_log(buf);
+
+ strprintf(&buf, "iwconfig %s key %s '%s'",
+ config.net.device,
+ config.net.wlan.auth == wa_wep_open ? "open" : "restricted",
+ key
+ );
+ fprintf(stderr, "%s\n", buf);
+ system_log(buf);
+
+ rc = 0;
+ break;
+
+ case di_wlan_wpa:
+ if(dia_input2("ESSID", &config.net.wlan.essid, 30, 0)) {
+ rc = -1;
+ break;
+ }
+
+ j = config.net.wlan.key_type == kt_pass_wpa ? 2 : 1;
+
+ i = dia_list("WPA Key Type", 30, NULL, wpa_key_items, j, align_left);
+
+ if(i < 1) {
+ rc = -1;
+ break;
+ }
+
+ config.net.wlan.key_type = i == 1 ? kt_hex : kt_pass_wpa;
+
+ if(dia_input2("WPA Key", &config.net.wlan.key, 30, 0) || !config.net.wlan.key) {
+ rc = -1;
+ break;
+ }
+
+ if(config.net.wlan.key_type == kt_pass_wpa && strlen(config.net.wlan.key) < 8) {
+ dia_message(txt_get(TXT_VNC_PASSWORD_TOO_SHORT), MSGTYPE_ERROR);
+ rc = -1;
+ break;
+ }
+
+ if(config.net.wlan.key_type == kt_pass_wpa) {
+ strprintf(&key, "\"%s\"", config.net.wlan.key);
+ }
+ else {
+ str_copy(&key, config.net.wlan.key);
+ }
+
+ f = fopen("/tmp/wpa_supplicant.conf", "w");
+ if(!f) {
+ rc = -1;
+ break;
+ }
+ fprintf(f,
+ "ap_scan=1\n"
+ "network={\n"
+ " key_mgmt=WPA-PSK\n"
+ " scan_ssid=1\n"
+ " ssid=\"%s\"\n"
+ " psk=%s\n"
+ "}\n",
+ config.net.wlan.essid,
+ key
+ );
+ fclose(f);
+
+ util_killall("wpa_supplicant", 15);
+ sleep(1);
+ util_killall("wpa_supplicant", 9);
+
+ strprintf(&buf, "wpa_supplicant -B -Dwext -i%s -c/tmp/wpa_supplicant.conf",
+ config.net.device
+ );
+ fprintf(stderr, "%s\n", buf);
+ system_log(buf);
+
+ rc = 0;
+ break;
+
+ default:
+ break;
+ }
+
+ free(buf);
+ free(key);
+
+ return rc;
+}
+
+
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/linuxrc-2.1.5/util.c new/linuxrc-2.1.6/util.c
--- old/linuxrc-2.1.5/util.c 2006-09-25 14:42:42.000000000 +0200
+++ new/linuxrc-2.1.6/util.c 2006-10-13 14:39:51.000000000 +0200
@@ -4738,3 +4738,23 @@
return de ? 1 : 0;
}
+
+/*
+ * like system() but redirect stdout to stderr
+ */
+int system_log(char *cmd)
+{
+ char *buf = NULL;
+ int i;
+
+ if(!cmd) return 0;
+
+ strprintf(&buf, "%s >&2", cmd);
+
+ i = system(buf);
+
+ free(buf);
+
+ return i;
+}
+
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/linuxrc-2.1.5/util.h new/linuxrc-2.1.6/util.h
--- old/linuxrc-2.1.5/util.h 2006-04-26 16:25:13.000000000 +0200
+++ new/linuxrc-2.1.6/util.h 2006-10-13 14:40:12.000000000 +0200
@@ -154,3 +154,5 @@
char *get_translation(slist_t *trans, char *locale);
int util_process_running(char *name);
+int system_log(char *cmd);
+
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Remember to have fun...
---------------------------------------------------------------------
To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org
For additional commands, e-mail: opensuse-commit+help@opensuse.org