Patch title: Release 90 bulk changes
Abstract:
File: /admin/file2.pli
Key:
    Removed line
    Added line
abstract
  [This is a subpart of ] ; link "file.pli" "file.pli"

# Copyright  Hubert Tonneau  hubert.tonneau@pliant.cx
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License version 2
# as published by the Free Software Foundation.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# version 2 along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.

scope "/pliant/admin/" "/pliant/install/"
module "file.pli"
module "execute.pli"

method s endswith sub -> yes
  arg Str s sub ; arg CBool yes
  yes := s:len>=sub:len and (s s:len-sub:len sub:len)=sub

function file_extract file in -> status
  arg Str file in ; arg Status status
  var FileInfo fileinfo := file_query file extended
  if (fileinfo:options option "os_name" Str)="" or fileinfo=undefined
    return failure
  var FileInfo ininfo := file_query in extended
  if ininfo=undefined
    file_tree_create in
    ininfo := file_query in extended
  if ininfo=undefined or (ininfo:options option "os_name" Str)="" or not ininfo:is_directory
    return failure
  if (file endswith ".tar.gz") or (file endswith ".tgz")
    status := shunt (execute "tar -zx -f "+(fileinfo:options option "os_name" Str) path in)=0 success failure
  eif (file endswith ".tar.bz2")
    status := shunt (execute "tar -jx -f "+(fileinfo:options option "os_name" Str) path in)=0 success failure
  eif (file endswith ".tar")
    status := shunt (execute "tar -x -f "+(fileinfo:options option "os_name" Str) path in)=0 success failure
  else
    status := failure

alias file_extract file_extract in "/pliant/admin/file.pli"