view calc.tcl @ 698:6ba9f961e463 default tip

quotedb: Bump version and copyright.
author Matti Hamalainen <ccr@tnsp.org>
date Mon, 18 Sep 2023 11:38:41 +0300
parents abd05400481d
children
line wrap: on
line source

##########################################################################
#
# Calc v0.4 by Matti 'ccr' Hamalainen <ccr@tnsp.org>
# (C) Copyright 2008-2021 Tecnic Software productions (TNSP)
#
# A simple calculator for Eggdrop.
#
# This script is freely distributable under GNU GPL (version 2) license.
#
##########################################################################

# Error message for when no arguments given to the command
set calc_err_noargs "Laalis?"

set calc_preferredmsg "PRIVMSG"


##########################################################################
# No need to look below this line
##########################################################################
set calc_message "Calc v0.4 by ccr/TNSP"

putlog "$calc_message"
bind pub - !laske calc_cmd_pub
bind msg - !laske calc_cmd_msg


# ------------------------------------------------------------------------
proc calc_smsg {udest umsg} {
  global calc_preferredmsg
  putserv "$calc_preferredmsg $udest :$umsg"
}

# ------------------------------------------------------------------------
proc calc_exec {args} {

  # This is something rather perverse
  set equ [join [join $args ""] ""]

  # Use external binary to calculate the result, but catch any exceptions / errors
  if {[catch {set res [exec -- "/usr/local/bin/mfcalc" "$equ"]} uerrmsg]} {
    return $uerrmsg
  } else {
    return "$res"
  }
}

# ------------------------------------------------------------------------
proc calc_cmd_pub {nick uhost hand chan args} {
  global calc_err_noargs

  if {$args == {} || $args == ""} {
    calc_smsg $chan "$calc_err_noargs"
    return 1
  }

  set result [calc_exec $args]
  calc_smsg $chan "${nick}, ${result}"
  return 1
}

# -------------------------------------------------------------------------
proc calc_cmd_msg {nick uhost hand args} {
  global calc_err_noargs

  if {$args == {} || $args == ""} {
    calc_smsg $nick "$calc_err_noargs"
    return 1
  }

  set result [calc_exec $args]
  calc_smsg $nick "$result"
  return 1
}

# -------------------------------------------------------------------------