Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 22 Jun 2005 14:26:34 +0400
From:      Sergey Akifyev <asa@agava.com>
To:        FreeBSD GNOME Users <gnome@freebsd.org>
Subject:   I've partially fixed gnome shares admin, testers needed
Message-ID:  <1119435994.2686.11.camel@asa>

next in thread | raw e-mail | index | archive | help

--=-ZzfIX3exL6hCvqhOKmdN
Content-Type: multipart/mixed; boundary="=-1LkqOAj8+0eiag+Rkf9v"


--=-1LkqOAj8+0eiag+Rkf9v
Content-Type: text/plain
Content-Transfer-Encoding: quoted-printable

Hello, folks!

Try to apply attached patch
to /usr/X11R6/share/setup-tool-backends/scripts/service.pl . After that,
SMB sharing should work, and config changes even apply after you press
OK. I didn't even start any work with NFS.

The patch can affect other admin tools, as it adopts to the script to
real FreeBSD RCNG. For example with the changes time-admin really runs
ntpd server, not only enable it in rc.conf.

Inline included patch:
--- service.pl.orig	Wed Jun 22 12:40:06 2005
+++ service.pl	Wed Jun 22 14:22:30 2005
@@ -956,7 +956,9 @@
   my ($service) =3D @_;
   my ($fd, $line, $active);
=20
-  $fd =3D &gst_file_run_pipe_read ("/etc/rc.d/$service rcvar");
+  $path =3D "/etc/rc.d/$service rcvar";
+  $path =3D "/usr/local/etc/rc.d/$service.sh" if (-f
"/usr/local/etc/rc.d/$service.sh");
+  $fd =3D &gst_file_run_pipe_read ("$path rcvar");
=20
   while (<$fd>)
   {
@@ -1369,6 +1371,31 @@
   }
 }
=20
+# Start or stop the service, depending on $active. Set
+# links accordingly.  $force makes this function use
+# start/stop only, without considerations for restart.
+# Not to be called from parse/replace tables, due to last $force
+# param: use the following two functions instead.
+sub gst_service_rcng_set_status_do
+{
+  my ($service, $active, $force) =3D @_;
+  my ($arg, $status);
+
+  $status =3D &gst_service_rcng_get_status ($service);
+  if ($status && !$force)
+  {
+    # if it's already active and you want it active, restart.
+    $arg =3D $active? "restart" : "stop";
+  }
+  else
+  {
+    # normal operation.
+    $arg =3D $active? "start" : "stop";
+  }
+
+  return &gst_service_rcng_run_script ($service, $arg);
+}
+
 sub gst_service_rcng_set_status
 {
   my ($service, $action) =3D @_;
@@ -1376,9 +1403,11 @@
   my ($default_rcconf) =3D "/etc/defaults/rc.conf";
   my ($rcconf) =3D "/etc/rc.conf";
=20
-  if (&gst_file_exists ("/etc/rc.d/$service"))
+  $path =3D "/etc/rc.d/$service";
+  $path =3D "/usr/local/etc/rc.d/$service.sh" if (-f
"/usr/local/etc/rc.d/$service.sh");
+  if (&gst_file_exists ("$path"))
   {
-    $fd =3D &gst_file_run_pipe_read ("/etc/rc.d/$service rcvar");
+    $fd =3D &gst_file_run_pipe_read ("$path rcvar");
=20
     while (<$fd>)
     {
@@ -1401,18 +1430,7 @@
     }
=20
     &gst_file_close ($fd);
-  }
-  elsif (&gst_file_exists ("/usr/local/etc/rc.d/$service.sh"))
-  {
-    if ($action)
-    {
-      gst_file_copy ("/usr/local/etc/rc.d/$service.sh.sample",
-                     "/usr/local/etc/rc.d/$service.sh");
-    }
-    else
-    {
-      gst_file_remove ("/usr/local/etc/rc.d/$service.sh");
-    }
+    &gst_service_rcng_set_status_do ($service, $action, 1);
   }
 }
=20
@@ -1547,7 +1565,12 @@
 {
   my ($service) =3D @_;
=20
-  $line =3D gst_file_run_backtick ("/etc/rc.d/$service forcestatus");
+  if ( -f "/usr/local/etc/rc.d/$service.sh" ) {
+    $line =3D gst_file_run_backtick ("/usr/local/etc/rc.d/$service.sh
forcestatus");
+  } else {
+    $line =3D gst_file_run_backtick ("/etc/rc.d/$service forcestatus");
+  }
+ =20
   return 1 if ($line =3D~ /pid [0-9]*/);
=20
   # hacky as hell, we need to check services in /usr/local/etc/rc.d
@@ -1727,7 +1750,9 @@
=20
   $farg =3D $map {$arg};
=20
-  if (!&gst_file_run ("/etc/rc.d/$service $farg"))
+  $path =3D "/etc/rc.d/$service";
+  $path =3D "/usr/local/etc/rc.d/$service.sh" if (-f
"/usr/local/etc/rc.d/$service.sh");
+  if (!&gst_file_run ("$path $farg"))
   {
     &gst_report ("service_sysv_op_success", $service, $str);
     &gst_report_leave ();
@@ -1801,7 +1826,7 @@
   my ($service) =3D @_;
=20
   return 1 if ( -f "/etc/rc.d/$service");
-  return 1 if ( -f "/usr/local/etc/rc.d/$service.sh.sample");
+  return 1 if ( -f "/usr/local/etc/rc.d/$service.sh");
   return 0;
 }
=20


--=20
regards,
Sergey Akifyev <http://dpx.niibaca.ru>;
AGAVA Software Company <http://www.agava.com>;
PGP key available from:
ftp://ftp.gascom.ru/pub/PGP-keys/asa.txt

--=-1LkqOAj8+0eiag+Rkf9v
Content-Disposition: attachment; filename=service.diff
Content-Type: text/x-patch; name=service.diff; charset=KOI8-R
Content-Transfer-Encoding: base64

LS0tIHNlcnZpY2UucGwub3JpZwlXZWQgSnVuIDIyIDEyOjQwOjA2IDIwMDUNCisrKyBzZXJ2aWNl
LnBsCVdlZCBKdW4gMjIgMTQ6MjI6MzAgMjAwNQ0KQEAgLTk1Niw3ICs5NTYsOSBAQA0KICAgbXkg
KCRzZXJ2aWNlKSA9IEBfOw0KICAgbXkgKCRmZCwgJGxpbmUsICRhY3RpdmUpOw0KIA0KLSAgJGZk
ID0gJmdzdF9maWxlX3J1bl9waXBlX3JlYWQgKCIvZXRjL3JjLmQvJHNlcnZpY2UgcmN2YXIiKTsN
CisgICRwYXRoID0gIi9ldGMvcmMuZC8kc2VydmljZSByY3ZhciI7DQorICAkcGF0aCA9ICIvdXNy
L2xvY2FsL2V0Yy9yYy5kLyRzZXJ2aWNlLnNoIiBpZiAoLWYgIi91c3IvbG9jYWwvZXRjL3JjLmQv
JHNlcnZpY2Uuc2giKTsNCisgICRmZCA9ICZnc3RfZmlsZV9ydW5fcGlwZV9yZWFkICgiJHBhdGgg
cmN2YXIiKTsNCiANCiAgIHdoaWxlICg8JGZkPikNCiAgIHsNCkBAIC0xMzY5LDYgKzEzNzEsMzEg
QEANCiAgIH0NCiB9DQogDQorIyBTdGFydCBvciBzdG9wIHRoZSBzZXJ2aWNlLCBkZXBlbmRpbmcg
b24gJGFjdGl2ZS4gU2V0DQorIyBsaW5rcyBhY2NvcmRpbmdseS4gICRmb3JjZSBtYWtlcyB0aGlz
IGZ1bmN0aW9uIHVzZQ0KKyMgc3RhcnQvc3RvcCBvbmx5LCB3aXRob3V0IGNvbnNpZGVyYXRpb25z
IGZvciByZXN0YXJ0Lg0KKyMgTm90IHRvIGJlIGNhbGxlZCBmcm9tIHBhcnNlL3JlcGxhY2UgdGFi
bGVzLCBkdWUgdG8gbGFzdCAkZm9yY2UNCisjIHBhcmFtOiB1c2UgdGhlIGZvbGxvd2luZyB0d28g
ZnVuY3Rpb25zIGluc3RlYWQuDQorc3ViIGdzdF9zZXJ2aWNlX3Jjbmdfc2V0X3N0YXR1c19kbw0K
K3sNCisgIG15ICgkc2VydmljZSwgJGFjdGl2ZSwgJGZvcmNlKSA9IEBfOw0KKyAgbXkgKCRhcmcs
ICRzdGF0dXMpOw0KKw0KKyAgJHN0YXR1cyA9ICZnc3Rfc2VydmljZV9yY25nX2dldF9zdGF0dXMg
KCRzZXJ2aWNlKTsNCisgIGlmICgkc3RhdHVzICYmICEkZm9yY2UpDQorICB7DQorICAgICMgaWYg
aXQncyBhbHJlYWR5IGFjdGl2ZSBhbmQgeW91IHdhbnQgaXQgYWN0aXZlLCByZXN0YXJ0Lg0KKyAg
ICAkYXJnID0gJGFjdGl2ZT8gInJlc3RhcnQiIDogInN0b3AiOw0KKyAgfQ0KKyAgZWxzZQ0KKyAg
ew0KKyAgICAjIG5vcm1hbCBvcGVyYXRpb24uDQorICAgICRhcmcgPSAkYWN0aXZlPyAic3RhcnQi
IDogInN0b3AiOw0KKyAgfQ0KKw0KKyAgcmV0dXJuICZnc3Rfc2VydmljZV9yY25nX3J1bl9zY3Jp
cHQgKCRzZXJ2aWNlLCAkYXJnKTsNCit9DQorDQogc3ViIGdzdF9zZXJ2aWNlX3Jjbmdfc2V0X3N0
YXR1cw0KIHsNCiAgIG15ICgkc2VydmljZSwgJGFjdGlvbikgPSBAXzsNCkBAIC0xMzc2LDkgKzE0
MDMsMTEgQEANCiAgIG15ICgkZGVmYXVsdF9yY2NvbmYpID0gIi9ldGMvZGVmYXVsdHMvcmMuY29u
ZiI7DQogICBteSAoJHJjY29uZikgPSAiL2V0Yy9yYy5jb25mIjsNCiANCi0gIGlmICgmZ3N0X2Zp
bGVfZXhpc3RzICgiL2V0Yy9yYy5kLyRzZXJ2aWNlIikpDQorICAkcGF0aCA9ICIvZXRjL3JjLmQv
JHNlcnZpY2UiOw0KKyAgJHBhdGggPSAiL3Vzci9sb2NhbC9ldGMvcmMuZC8kc2VydmljZS5zaCIg
aWYgKC1mICIvdXNyL2xvY2FsL2V0Yy9yYy5kLyRzZXJ2aWNlLnNoIik7DQorICBpZiAoJmdzdF9m
aWxlX2V4aXN0cyAoIiRwYXRoIikpDQogICB7DQotICAgICRmZCA9ICZnc3RfZmlsZV9ydW5fcGlw
ZV9yZWFkICgiL2V0Yy9yYy5kLyRzZXJ2aWNlIHJjdmFyIik7DQorICAgICRmZCA9ICZnc3RfZmls
ZV9ydW5fcGlwZV9yZWFkICgiJHBhdGggcmN2YXIiKTsNCiANCiAgICAgd2hpbGUgKDwkZmQ+KQ0K
ICAgICB7DQpAQCAtMTQwMSwxOCArMTQzMCw3IEBADQogICAgIH0NCiANCiAgICAgJmdzdF9maWxl
X2Nsb3NlICgkZmQpOw0KLSAgfQ0KLSAgZWxzaWYgKCZnc3RfZmlsZV9leGlzdHMgKCIvdXNyL2xv
Y2FsL2V0Yy9yYy5kLyRzZXJ2aWNlLnNoIikpDQotICB7DQotICAgIGlmICgkYWN0aW9uKQ0KLSAg
ICB7DQotICAgICAgZ3N0X2ZpbGVfY29weSAoIi91c3IvbG9jYWwvZXRjL3JjLmQvJHNlcnZpY2Uu
c2guc2FtcGxlIiwNCi0gICAgICAgICAgICAgICAgICAgICAiL3Vzci9sb2NhbC9ldGMvcmMuZC8k
c2VydmljZS5zaCIpOw0KLSAgICB9DQotICAgIGVsc2UNCi0gICAgew0KLSAgICAgIGdzdF9maWxl
X3JlbW92ZSAoIi91c3IvbG9jYWwvZXRjL3JjLmQvJHNlcnZpY2Uuc2giKTsNCi0gICAgfQ0KKyAg
ICAmZ3N0X3NlcnZpY2VfcmNuZ19zZXRfc3RhdHVzX2RvICgkc2VydmljZSwgJGFjdGlvbiwgMSk7
DQogICB9DQogfQ0KIA0KQEAgLTE1NDcsNyArMTU2NSwxMiBAQA0KIHsNCiAgIG15ICgkc2Vydmlj
ZSkgPSBAXzsNCiANCi0gICRsaW5lID0gZ3N0X2ZpbGVfcnVuX2JhY2t0aWNrICgiL2V0Yy9yYy5k
LyRzZXJ2aWNlIGZvcmNlc3RhdHVzIik7DQorICBpZiAoIC1mICIvdXNyL2xvY2FsL2V0Yy9yYy5k
LyRzZXJ2aWNlLnNoIiApIHsNCisgICAgJGxpbmUgPSBnc3RfZmlsZV9ydW5fYmFja3RpY2sgKCIv
dXNyL2xvY2FsL2V0Yy9yYy5kLyRzZXJ2aWNlLnNoIGZvcmNlc3RhdHVzIik7DQorICB9IGVsc2Ug
ew0KKyAgICAkbGluZSA9IGdzdF9maWxlX3J1bl9iYWNrdGljayAoIi9ldGMvcmMuZC8kc2Vydmlj
ZSBmb3JjZXN0YXR1cyIpOw0KKyAgfQ0KKyAgDQogICByZXR1cm4gMSBpZiAoJGxpbmUgPX4gL3Bp
ZCBbMC05XSovKTsNCiANCiAgICMgaGFja3kgYXMgaGVsbCwgd2UgbmVlZCB0byBjaGVjayBzZXJ2
aWNlcyBpbiAvdXNyL2xvY2FsL2V0Yy9yYy5kDQpAQCAtMTcyNyw3ICsxNzUwLDkgQEANCiANCiAg
ICRmYXJnID0gJG1hcCB7JGFyZ307DQogDQotICBpZiAoISZnc3RfZmlsZV9ydW4gKCIvZXRjL3Jj
LmQvJHNlcnZpY2UgJGZhcmciKSkNCisgICRwYXRoID0gIi9ldGMvcmMuZC8kc2VydmljZSI7DQor
ICAkcGF0aCA9ICIvdXNyL2xvY2FsL2V0Yy9yYy5kLyRzZXJ2aWNlLnNoIiBpZiAoLWYgIi91c3Iv
bG9jYWwvZXRjL3JjLmQvJHNlcnZpY2Uuc2giKTsNCisgIGlmICghJmdzdF9maWxlX3J1biAoIiRw
YXRoICRmYXJnIikpDQogICB7DQogICAgICZnc3RfcmVwb3J0ICgic2VydmljZV9zeXN2X29wX3N1
Y2Nlc3MiLCAkc2VydmljZSwgJHN0cik7DQogICAgICZnc3RfcmVwb3J0X2xlYXZlICgpOw0KQEAg
LTE4MDEsNyArMTgyNiw3IEBADQogICBteSAoJHNlcnZpY2UpID0gQF87DQogDQogICByZXR1cm4g
MSBpZiAoIC1mICIvZXRjL3JjLmQvJHNlcnZpY2UiKTsNCi0gIHJldHVybiAxIGlmICggLWYgIi91
c3IvbG9jYWwvZXRjL3JjLmQvJHNlcnZpY2Uuc2guc2FtcGxlIik7DQorICByZXR1cm4gMSBpZiAo
IC1mICIvdXNyL2xvY2FsL2V0Yy9yYy5kLyRzZXJ2aWNlLnNoIik7DQogICByZXR1cm4gMDsNCiB9
DQogDQo=


--=-1LkqOAj8+0eiag+Rkf9v--

--=-ZzfIX3exL6hCvqhOKmdN
Content-Type: application/pgp-signature; name=signature.asc
Content-Description: This is a digitally signed message part

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.1 (FreeBSD)

iD8DBQBCuTzabu06QwmNwNsRAiPPAJwJ+eXfTZQXS1jwRfpFibkc5ZfCewCfbXTH
0nvqwggYikjapf8AJwK8htY=
=+ZhI
-----END PGP SIGNATURE-----

--=-ZzfIX3exL6hCvqhOKmdN--




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?1119435994.2686.11.camel>