From b378ec1b9cdaf8536fc326dc5302b73a5c704791 Mon Sep 17 00:00:00 2001 From: hummypkg Date: Fri, 2 Sep 2011 19:50:10 +0000 Subject: [PATCH] create system class and use it. Expand rsv fetch to include ersvtype git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@344 2a923420-c742-0410-a762-8d5b09965624 --- CONTROL/control | 2 +- var/mongoose/cgi-bin/epg_schedule.jim | 4 +- var/mongoose/cgi-bin/restart.jim | 5 +-- var/mongoose/include/diskspace.jim | 24 ++-------- var/mongoose/include/model.jim | 14 ++---- var/mongoose/include/restart.jim | 10 ++--- var/mongoose/lib/rsv.class | 7 +-- var/mongoose/lib/system.class | 64 +++++++++++++++++++++++++++ 8 files changed, 83 insertions(+), 47 deletions(-) create mode 100644 var/mongoose/lib/system.class diff --git a/CONTROL/control b/CONTROL/control index 4e9d6b52..22037105 100644 --- a/CONTROL/control +++ b/CONTROL/control @@ -1,7 +1,7 @@ Package: webif Priority: optional Section: web -Version: 0.6.6-1 +Version: 0.6.7 Architecture: mipsel Maintainer: af123@hummypkg.org.uk Depends: mongoose(>=3.0-2),jim(>=0.71-1),jim-sqlite3(>=0.71-1),jim-cgi(>=0.4),jim-oo,jim-pack,service-control,busybox(>=1.18.3-1),lsof,epg(>=1.0.3),hmt(>=1.0.6),ssmtp diff --git a/var/mongoose/cgi-bin/epg_schedule.jim b/var/mongoose/cgi-bin/epg_schedule.jim index 2f1e67b1..e6b986f1 100755 --- a/var/mongoose/cgi-bin/epg_schedule.jim +++ b/var/mongoose/cgi-bin/epg_schedule.jim @@ -2,7 +2,7 @@ package require cgi source /mod/var/mongoose/lib/setup -require epg.class +require epg.class system.class puts "Content-Type: text/html" puts "" @@ -76,7 +76,7 @@ if {$msg ne "" || [catch {[rsv new $args] insert} msg]} { puts "Error encountered while scheduling the recording: $msg" } else { puts "Successfully scheduled recording of [$event get name]" - close [open /tmp/.restartpending w] + system restartpending } epg cleanup diff --git a/var/mongoose/cgi-bin/restart.jim b/var/mongoose/cgi-bin/restart.jim index 4b0748ba..67d456f7 100755 --- a/var/mongoose/cgi-bin/restart.jim +++ b/var/mongoose/cgi-bin/restart.jim @@ -2,7 +2,7 @@ package require cgi source /mod/var/mongoose/lib/setup -require rsv.class +require rsv.class system.class puts "Content-Type: text/html" puts "" @@ -11,8 +11,7 @@ cgi_input if {[cgi_get now] eq "yes"} { # - Busybox reboot does sync the disk but may still not be clean enough. puts "Restarting." - exec /etc/init.d/S90settop shut - exec /sbin/reboot + system reboot exit } diff --git a/var/mongoose/include/diskspace.jim b/var/mongoose/include/diskspace.jim index c511943a..fc90df05 100755 --- a/var/mongoose/include/diskspace.jim +++ b/var/mongoose/include/diskspace.jim @@ -1,27 +1,9 @@ #!/mod/bin/jimsh -proc extract {line} { - regsub -all -- {[[:space:]]+} $line " " line - set fields [split $line] - set ::size [lindex $fields 1] - set ::used [lindex $fields 2] - set ::perc [string trimright [lindex $fields 4] "%"] -} - -set used 0 -set size 0 -set perc 0 - -foreach df [split [exec df -h 2>>/dev/null] "\n\r"] { - if {[string match *sd?2* $df]} { - extract $df - break; - } - if {[string match *media/drive? $df]} { - extract $df - } -} +source /mod/var/mongoose/lib/setup +require system.class +lassign [system diskspace] size used perc set file [format "%02d" [expr {$perc * 25 / 100 + 1}]] # The HD model only has the USB images which are blue. I prefer the green diff --git a/var/mongoose/include/model.jim b/var/mongoose/include/model.jim index c51f00cf..8a64159a 100755 --- a/var/mongoose/include/model.jim +++ b/var/mongoose/include/model.jim @@ -1,15 +1,7 @@ #!/mod/bin/jimsh -if {[catch {set fp [open /etc/model r]}]} { - set model {HD[R]} -} else { - set model [string trim [read $fp]] - close $fp -} +source /mod/var/mongoose/lib/setup +require system.class -if {[catch {set hostname [string trim [exec hostname]]}]} { - set hostname "humax" -} - -puts "Humax $model Fox T2 ($hostname)" +puts "Humax [system model] Fox T2 ([system hostname])" diff --git a/var/mongoose/include/restart.jim b/var/mongoose/include/restart.jim index c4efc46c..9b9c47ff 100755 --- a/var/mongoose/include/restart.jim +++ b/var/mongoose/include/restart.jim @@ -1,5 +1,8 @@ #!/mod/bin/jimsh +source /mod/var/mongoose/lib/setup +require system.class + if {[file exists /tmp/.restartpending]} { puts { @@ -12,12 +15,7 @@ puts { } -# Is humaxtv doing anything? -set pid [exec pgrep humaxtv] -set c 0 -catch { set c [exec /mod/bin/lsof -p $pid | grep Video | fgrep .ts | wc -l] } - -if {$c > 0} { +if {[system busy]} { puts "Cannot restart whilst box is busy." } else { puts { diff --git a/var/mongoose/lib/rsv.class b/var/mongoose/lib/rsv.class index ad4ed956..4678fe36 100755 --- a/var/mongoose/lib/rsv.class +++ b/var/mongoose/lib/rsv.class @@ -240,18 +240,19 @@ proc {rsv entry} {{table TBL_RESERVATION} crid svc} { return 0 } -proc {rsv fetch} {{table TBL_RESERVATION} hsvc nsttime usevtid events} { +proc {rsv fetch} {{table TBL_RESERVATION} ersvtype hsvc nsttime usevtid events} { set res [$::rsvdb query " select $table.*, channel.TBL_SVC.szSvcName, channel.TBL_SVC.usLcn from $table left join channel.TBL_SVC on $table.hSvc = channel.TBL_SVC.hSvc - where $table.hsvc = '%s' + where $table.ersvtype = '%s' + and $table.hsvc = '%s' and $table.nsttime = '%s' and $table.usevtid = '%s' and $table.szEventToRecord = '%s' - " $hsvc $nsttime $usevtid $events] + " $ersvtype $hsvc $nsttime $usevtid $events] if {[llength $res] > 0} { return [rsv new [lindex $res 0]] diff --git a/var/mongoose/lib/system.class b/var/mongoose/lib/system.class new file mode 100644 index 00000000..e0d5bf6d --- /dev/null +++ b/var/mongoose/lib/system.class @@ -0,0 +1,64 @@ + +if {![exists -proc class ]} { package require oo } + +class system {} + +proc {system model} {} { + if {[catch {set fp [open /etc/model r]}]} { + set model {HD[R]} + } else { + set model [string trim [read $fp]] + close $fp + } + return $model +} + +proc {system hostname} {} { + if {[catch {set hostname [string trim [exec hostname]]}]} { + set hostname "humax" + } + return $hostname +} + +proc {system diskspace} {} { + switch [system model] { + HDR { set part /mnt/hd2 } + HD { set part /media/drive1 } + } + + set size 0 + set used 0 + set perc 0 + foreach line [split [exec df -h $part 2>>/dev/null] "\n\r"] { + if {[string match "/*" $line]} { + regsub -all -- {[[:space:]]+} $line " " line + set fields [split $line] + set size [lindex $fields 1] + set used [lindex $fields 2] + set perc [string trimright [lindex $fields 4] "%"] + break + } + } + + return [list $size $used $perc] +} + +proc {system busy} {} { + # Is humaxtv doing anything? + set pid [exec pgrep humaxtv] + set c 0 + catch { set c [exec /mod/bin/lsof -p $pid | grep Video | fgrep .ts | wc -l] } + + if {$c > 0} { return 1 } + return 0 +} + +proc {system reboot} {} { + exec /etc/init.d/S90settop shut + exec /sbin/reboot +} + +proc {system restartpending} {} { + close [open /tmp/.restartpending w] +} +