make lib/syslog.t portable to systems that don't have _PATH_LOG,
Gurusamy Sarathy [Sat, 29 Apr 2000 19:55:24 +0000 (19:55 +0000)]
make _PATH_LOG() return "" if unavailable

p4raw-id: //depot/perl@6018

ext/File/Glob/Glob.pm
ext/Sys/Syslog/Syslog.pm
ext/Sys/Syslog/Syslog.xs
t/lib/syslog.t

index 1353d4f..98ee34d 100644 (file)
@@ -331,9 +331,9 @@ Be aware that all filenames returned from File::Glob are tainted.
 =item *
 
 If you want to use multiple patterns, e.g. C<bsd_glob "a* b*">, you should
-probably throw them in a set as in C<glob "{a*,b*}">.  This is because
-the argument to glob isn't subjected to parsing by the C shell.  Remember
-that you can use a backslash to escape things.
+probably throw them in a set as in C<bsd_glob "{a*,b*}">.  This is because
+the argument to bsd_glob() isn't subjected to parsing by the C shell.
+Remember that you can use a backslash to escape things.
 
 =item *
 
index 95f89ce..c7ce3de 100644 (file)
@@ -70,9 +70,11 @@ Sets the socket type to be used for the next call to
 C<openlog()> or C<syslog()> and returns TRUE on success,
 undef on failure.
 
-A value of 'unix' will connect to the UNIX domain socket returned by
-C<_PATH_LOG> in F<syslog.ph>.  A value of 'inet' will connect to an
-INET socket returned by getservbyname().  Any other value croaks.
+A value of 'unix' will connect to the UNIX domain socket returned by the
+C<_PATH_LOG> macro (if you system defines it) in F<syslog.h>.  A value of
+'inet' will connect to an INET socket returned by getservbyname().  If
+C<_PATH_LOG> is unavailable or if getservbyname() fails, returns undef.  Any
+other value croaks.
 
 The default is for the INET socket to be used.
 
@@ -107,10 +109,15 @@ L<syslog(3)>
 
 =head1 AUTHOR
 
-Tom Christiansen E<lt>F<tchrist@perl.com>E<gt> and Larry Wall E<lt>F<larry@wall.org>E<gt>.
-UNIX domain sockets added by Sean Robinson E<lt>F<robinson_s@sc.maricopa.edu>E<gt>
-with support from Tim Bunce <Tim.Bunce@ig.co.uk> and the perl5-porters mailing list.
-Dependency on F<syslog.ph> replaced with XS code bu Tom Hughes E<lt>F<tom@compton.nu>E<gt>.
+Tom Christiansen E<lt>F<tchrist@perl.com>E<gt> and Larry Wall
+E<lt>F<larry@wall.org>E<gt>.
+
+UNIX domain sockets added by Sean Robinson
+E<lt>F<robinson_s@sc.maricopa.edu>E<gt> with support from Tim Bunce
+E<lt>F<Tim.Bunce@ig.co.uk>E<gt> and the perl5-porters mailing list.
+
+Dependency on F<syslog.ph> replaced with XS code by Tom Hughes
+E<lt>F<tom@compton.nu>E<gt>.
 
 =cut
 
@@ -159,7 +166,7 @@ sub setlogsock {
     local($setsock) = shift;
     &disconnect if $connected;
     if (lc($setsock) eq 'unix') {
-        if (defined &_PATH_LOG) {
+        if (length _PATH_LOG()) {
             $sock_type = 1;
         } else {
             return undef;
@@ -274,7 +281,8 @@ sub connect {
         socket(SYSLOG,AF_INET,SOCK_DGRAM,$udp)           || croak "socket: $!";
         connect(SYSLOG,$that)                            || croak "connect: $!";
     } else {
-        my $syslog = _PATH_LOG()                         || croak "_PATH_LOG not found in syslog.ph";
+        my $syslog = _PATH_LOG();
+       length($syslog)                                  || croak "_PATH_LOG unavailable in syslog.h";
         my $that = sockaddr_un($syslog)                  || croak "Can't locate $syslog";
         socket(SYSLOG,AF_UNIX,SOCK_STREAM,0)             || croak "socket: $!";
         if (!connect(SYSLOG,$that)) {
index f0573b8..31c0e84 100644 (file)
@@ -550,8 +550,7 @@ _PATH_LOG()
 #ifdef _PATH_LOG
        RETVAL = _PATH_LOG;
 #else
-       croak("Your vendor has not defined the Sys::Syslog macro _PATH_LOG");
-       RETVAL = NULL;
+       RETVAL = "";
 #endif
     OUTPUT:
        RETVAL
index 2ed887a..e1927bc 100755 (executable)
@@ -14,9 +14,14 @@ use Sys::Syslog qw(:DEFAULT setlogsock);
 
 print "1..6\n";
 
-print defined(eval { setlogsock('unix') }) ? "ok 1\n" : "not ok 1\n";
-print defined(eval { openlog('perl', 'ndelay', 'local0') }) ? "ok 2\n" : "not ok 2\n";
-print defined(eval { syslog('info', 'test') }) ? "ok 3\n" : "not ok 3\n";
+if (Sys::Syslog::_PATH_LOG()) {
+    print defined(eval { setlogsock('unix') }) ? "ok 1\n" : "not ok 1\n";
+    print defined(eval { openlog('perl', 'ndelay', 'local0') }) ? "ok 2\n" : "not ok 2\n";
+    print defined(eval { syslog('info', 'test') }) ? "ok 3\n" : "not ok 3\n";
+}
+else {
+    for (1..3) { print "ok $_ # skipping, _PATH_LOG unavailable\n" }
+}
 
 print defined(eval { setlogsock('inet') }) ? "ok 4\n" : "not ok 4\n";
 print defined(eval { openlog('perl', 'ndelay', 'local0') }) ? "ok 5\n" : "not ok 5\n";