All pastes #2079113 Raw Edit

pbxdude

public text v1 · immutable
#2079113 ·published 2011-08-30 14:02 UTC
rendered paste body
#!/usr/bin/perl -w

# usage:
#    cat /path/to/asterisk_source/include/asterisk/causes.h \
#       | this_perl_script \
#       > /path/to/extensions-include-foo.conf
#
# extensions.conf: (example)
#    ...
#    #include "/path/to/extensions-include-foo.conf"
#    [macro-dial_something]
#    ...
#    exten => h,1,GoSub(ast_hangup_causes,hc-${HANGUPCAUSE},1)
#    exten => h,n,NoOp(Hangup cause was ${HANGUPREASON})
#    ...

use strict;
use vars qw( $trash $reason $code );

print <<_EOM ;
[ast_hangup_causes]
;
; Sets the variable HANGUPREASON
_EOM

while(<>) {
   chop; s/^\s+//; s/\s+$//;
   next unless (/^#define\s+AST_CAUSE/o && /\d+$/o);

   ($trash,$reason,$code) = split(/\s+/, $_);
   $reason =~ s/^AST_CAUSE_//;

   print <<_EOM ;
;
exten => hc-$code,1,Set(HANGUPREASON=$reason)
exten => hc-$code,n,Return()
_EOM
}

print <<_EOM ;
;
exten => hc-.,1,Set(HANGUPREASON=REASON_\${EXTEN:3}_NOTINLIST)
exten => hc-.,n,Return()
_EOM

exit $?