Merged revisions 297821 via svnmerge from
authorTilghman Lesher <tilghman@meg.abyt.es>
Tue, 7 Dec 2010 22:54:00 +0000 (22:54 +0000)
committerTilghman Lesher <tilghman@meg.abyt.es>
Tue, 7 Dec 2010 22:54:00 +0000 (22:54 +0000)
https://origsvn.digium.com/svn/asterisk/branches/1.8

................
  r297821 | tilghman | 2010-12-07 16:51:05 -0600 (Tue, 07 Dec 2010) | 18 lines

  Merged revisions 297819 via svnmerge from
  https://origsvn.digium.com/svn/asterisk/branches/1.6.2

  ................
    r297819 | tilghman | 2010-12-07 16:40:45 -0600 (Tue, 07 Dec 2010) | 11 lines

    Merged revisions 297818 via svnmerge from
    https://origsvn.digium.com/svn/asterisk/branches/1.4

    ........
      r297818 | tilghman | 2010-12-07 16:35:50 -0600 (Tue, 07 Dec 2010) | 4 lines

      Use non-deprecated APIs for CoreAudio

      Review: https://reviewboard.asterisk.org/r/1040/
    ........
  ................
................

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@297822 65c4cc65-6c06-0410-ace0-fbb531ad65f3

Makefile
contrib/init.d/org.asterisk.asterisk.plist
contrib/init.d/org.asterisk.muted.plist [new file with mode: 0644]
utils/muted.c

index 1067b5a..bc6fdea 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -801,8 +801,17 @@ config:
                        cat contrib/init.d/rc.archlinux.asterisk | sed 's|__ASTERISK_ETC_DIR__|$(ASTETCDIR)|;s|__ASTERISK_SBIN_DIR__|$(ASTSBINDIR)|;s|__ASTERISK_VARRUN_DIR__|$(ASTVARRUNDIR)|;' > contrib/init.d/rc.asterisk.tmp ; \
                        $(INSTALL) -m 755 contrib/init.d/rc.asterisk.tmp $(DESTDIR)/etc/rc.d/asterisk ; \
                        rm -f contrib/init.d/rc.asterisk.tmp ; \
-               elif [ -d $(DESTDIR)/Library/LaunchDaemons -a ! -f $(DESTDIR)/Library/LaunchDaemons/org.asterisk.asterisk.plist ] ; then \
-                       $(INSTALL) -m 644 contrib/init.d/org.asterisk.asterisk.plist $(DESTDIR)/Library/LaunchDaemons/org.asterisk.asterisk.plist; \
+               elif [ -d $(DESTDIR)/Library/LaunchDaemons ]; then \
+                       if [ ! -f $(DESTDIR)/Library/LaunchDaemons/org.asterisk.asterisk.plist ]; then \
+                               sed 's|__ASTERISK_SBIN_DIR__|$(ASTSBINDIR)|;' < contrib/init.d/org.asterisk.asterisk.plist > asterisk.plist ; \
+                               $(INSTALL) -m 644 asterisk.plist $(DESTDIR)/Library/LaunchDaemons/org.asterisk.asterisk.plist; \
+                               rm -f asterisk.plist; \
+                       fi; \
+                       if [ ! -f $(DESTDIR)/Library/LaunchDaemons/org.asterisk.muted.plist ]; then \
+                               sed 's|__ASTERISK_SBIN_DIR__|$(ASTSBINDIR)|;' < contrib/init.d/org.asterisk.muted.plist > muted.plist ; \
+                               $(INSTALL) -m 644 muted.plist $(DESTDIR)/Library/LaunchDaemons/org.asterisk.muted.plist; \
+                               rm -f muted.plist; \
+                       fi; \
                elif [ -f /etc/slackware-version ]; then \
                        echo "Slackware is not currently supported, although an init script does exist for it."; \
                else \
index 79fe5d8..e22ce3e 100644 (file)
@@ -3,7 +3,7 @@
 <plist version="1.0">
 <dict>
        <key>Label</key>
-       <string>org.asterisk.asterisk.launchagent</string>
+       <string>org.asterisk.asterisk</string>
        <key>Disabled</key>
        <false/><!-- Change this to '<true/>' to disable Asterisk -->
        <key>UserName</key>
        <key>Umask</key>
        <integer>7</integer><!-- 0007 -->
        <key>Program</key>
-       <string>/usr/local/sbin/asterisk</string>
+       <string>__ASTERISK_SBIN_DIR__/asterisk</string>
        <key>ProgramArguments</key>
        <array>
-               <string>/usr/local/sbin/asterisk</string>
+               <string>__ASTERISK_SBIN_DIR__/asterisk</string>
                <string>-f</string><!-- Don't fork.  This option is mandatory when running with launchd. -->
        </array>
        <key>EnvironmentVariables</key>
diff --git a/contrib/init.d/org.asterisk.muted.plist b/contrib/init.d/org.asterisk.muted.plist
new file mode 100644 (file)
index 0000000..e3317ca
--- /dev/null
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+       <key>Label</key>
+       <string>org.asterisk.muted</string>
+       <key>Disabled</key>
+       <true/>
+       <key>UserName</key>
+       <string>asterisk</string>
+       <key>GroupName</key>
+       <string>asterisk</string>
+       <key>KeepAlive</key>
+       <true/>
+       <key>RunAtLoad</key>
+       <true/>
+       <key>Umask</key>
+       <integer>7</integer><!-- 0007 -->
+       <key>Program</key>
+       <string>__ASTERISK_SBIN_DIR__/muted</string>
+       <key>ProgramArguments</key>
+       <array>
+               <string>__ASTERISK_SBIN_DIR__/muted</string>
+               <string>-f</string>
+       </array>
+       <key>StandardInPath</key>
+       <string>/dev/null</string>
+       <key>StandardOutPath</key>
+       <string>/dev/null</string>
+       <key>StandardErrorPath</key>
+       <string>/dev/null</string>
+</dict>
+</plist>
index 1202237..211766e 100644 (file)
@@ -39,6 +39,9 @@
 
 #ifdef __Darwin__
 #include <CoreAudio/AudioHardware.h> 
+#include <sys/types.h>
+#include <pwd.h>
+#include <sys/stat.h>
 #elif defined(__linux__) || defined(__FreeBSD__) || defined(__GLIBC__)
 #include <sys/soundcard.h>
 #endif
@@ -54,7 +57,9 @@
 #include <netinet/in.h>
 #include <arpa/inet.h>
 
-static char *config = "/etc/muted.conf";
+#define ast_strlen_zero(a)     (!(*(a)))
+
+static char *config = "/etc/asterisk/muted.conf";
 
 static char host[256] = "";
 static char user[256] = "";
@@ -349,17 +354,25 @@ static float getvol(void)
        AudioDeviceID device;
        UInt32 size;
        UInt32 channels[2];
+       AudioObjectPropertyAddress OutputAddr = { kAudioHardwarePropertyDefaultOutputDevice, kAudioObjectPropertyScopeGlobal, kAudioObjectPropertyElementMaster };
+       AudioObjectPropertyAddress ChannelAddr = { kAudioDevicePropertyPreferredChannelsForStereo, kAudioDevicePropertyScopeOutput, kAudioObjectPropertyElementWildcard };
+       AudioObjectPropertyAddress VolumeAddr = { kAudioDevicePropertyVolumeScalar, kAudioDevicePropertyScopeOutput, };
 
        size = sizeof(device);
-       err = AudioHardwareGetProperty(kAudioHardwarePropertyDefaultOutputDevice, &size, &device);
+       err = AudioObjectGetPropertyData(kAudioObjectSystemObject, &OutputAddr, 0, NULL, &size, &device);
        size = sizeof(channels);
-       if (!err) 
-               err = AudioDeviceGetProperty(device, 0, false, kAudioDevicePropertyPreferredChannelsForStereo, &size, &channels);
+       if (!err) {
+               err = AudioObjectGetPropertyData(device, &ChannelAddr, 0, NULL, &size, &channels);
+       }
        size = sizeof(vol);
-       if (!err)
-               err = AudioDeviceGetProperty(device, channels[0], false, kAudioDevicePropertyVolumeScalar, &size, &volumeL);
-       if (!err)
-               err = AudioDeviceGetProperty(device, channels[1], false, kAudioDevicePropertyVolumeScalar, &size, &volumeR);
+       if (!err) {
+               VolumeAddr.mElement = channels[0];
+               err = AudioObjectGetPropertyData(device, &VolumeAddr, 0, NULL, &size, &volumeL);
+       }
+       if (!err) {
+               VolumeAddr.mElement = channels[1];
+               err = AudioObjectGetPropertyData(device, &VolumeAddr, 0, NULL, &size, &volumeR);
+       }
        if (!err)
                vol = (volumeL < volumeR) ? volumeR : volumeL;
        else {
@@ -385,16 +398,23 @@ static int setvol(float vol)
        AudioDeviceID device;
        UInt32 size;
        UInt32 channels[2];
+       AudioObjectPropertyAddress OutputAddr = { kAudioHardwarePropertyDefaultOutputDevice, kAudioObjectPropertyScopeGlobal, kAudioObjectPropertyElementMaster };
+       AudioObjectPropertyAddress ChannelAddr = { kAudioDevicePropertyPreferredChannelsForStereo, kAudioDevicePropertyScopeOutput, kAudioObjectPropertyElementWildcard };
+       AudioObjectPropertyAddress VolumeAddr = { kAudioDevicePropertyVolumeScalar, kAudioDevicePropertyScopeOutput, };
 
        size = sizeof(device);
-       err = AudioHardwareGetProperty(kAudioHardwarePropertyDefaultOutputDevice, &size, &device);
+       err = AudioObjectGetPropertyData(kAudioObjectSystemObject, &OutputAddr, 0, NULL, &size, &device);
        size = sizeof(channels);
-       err = AudioDeviceGetProperty(device, 0, false, kAudioDevicePropertyPreferredChannelsForStereo, &size, &channels);
+       err = AudioObjectGetPropertyData(device, &ChannelAddr, 0, NULL, &size, &channels);
        size = sizeof(vol);
-       if (!err)
-               err = AudioDeviceSetProperty(device, 0, channels[0], false, kAudioDevicePropertyVolumeScalar, size, &volumeL);
-       if (!err)
-               err = AudioDeviceSetProperty(device, 0, channels[1], false, kAudioDevicePropertyVolumeScalar, size, &volumeR); 
+       if (!err) {
+               VolumeAddr.mElement = channels[0];
+               err = AudioObjectSetPropertyData(device, &VolumeAddr, 0, NULL, size, &volumeL);
+       }
+       if (!err) {
+               VolumeAddr.mElement = channels[1];
+               err = AudioObjectSetPropertyData(device, &VolumeAddr, 0, NULL, size, &volumeR);
+       }
        if (err) {
 #endif
 
@@ -692,9 +712,33 @@ int main(int argc, char *argv[])
                        exit(1);
                }
 #else
-               fprintf(stderr, "Mac OS X detected.  Use 'launchd -d muted -f' to launch.\n");
+               const char *found = NULL, *paths[] = {
+                       "/Library/LaunchAgents/org.asterisk.muted.plist",
+                       "/Library/LaunchDaemons/org.asterisk.muted.plist",
+                       "contrib/init.d/org.asterisk.muted.plist",
+                       "<path-to-asterisk-source>/contrib/init.d/org.asterisk.muted.plist" };
+               char userpath[256];
+               struct stat unused;
+               struct passwd *pwd = getpwuid(getuid());
+               int i;
+
+               snprintf(userpath, sizeof(userpath), "%s%s", pwd->pw_dir, paths[0]);
+               if (!stat(userpath, &unused)) {
+                       found = userpath;
+               }
+
+               if (!found) {
+                       for (i = 0; i < 3; i++) {
+                               if (!stat(paths[i], &unused)) {
+                                       found = paths[i];
+                                       break;
+                               }
+                       }
+               }
+
+               fprintf(stderr, "Mac OS X detected.  Use 'launchctl load -w %s' to launch.\n", found ? found : paths[3]);
                exit(1);
-#endif
+#endif /* !defined(HAVE_SBIN_LAUNCHD */
        }
 #endif
        for(;;) {