Update of /cvsroot/phpshell/phpshell
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv23343

Modified Files:
        ChangeLog INSTALL README phpshell.css phpshell.php release.sh 
Log Message:
Imported PHP Shell version 2.0.

Index: ChangeLog
===================================================================
RCS file: /cvsroot/phpshell/phpshell/ChangeLog,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -d -r1.5 -r1.6
--- ChangeLog   13 Jan 2006 17:34:25 -0000      1.5
+++ ChangeLog   13 Jan 2006 17:38:31 -0000      1.6
@@ -1,3 +1,31 @@
+2004-03-27  Martin Geisler  <[EMAIL PROTECTED]>
+
+       * phpshell.php 1.29: Removed debug output.
+
+       * README 1.11: Updated documentation for new cool shell-like interface.
+
+       * INSTALL 1.5:
+       Updated documentation about the command substitution using alises.
+
+       * phpshell.css 1.2:
+       New styles to make the textarea and input box blend together.
+
+       * phpshell.php 1.28: A little documentation for the alias feature.
+
+       * phpshell.php 1.27:
+       The shell now looks and behaves much more like a real shell: the shell
+       now has a commandline history just like a real shell.
+
+       The parsing of 'cd' commands have been rewritten so that even more
+       special cases are taken care of, and simple command substitution using
+       aliases have been introduced.
+
+2004-03-24  Martin Geisler  <[EMAIL PROTECTED]>
+
+       * phpshell.php 1.26:
+       Increased year of copyright to 2004.  Fixed the references to the PNG
+       images, as pointed out by Michael Z. Bell.
+
 2003-11-11  Martin Geisler  <[EMAIL PROTECTED]>
 
        * AUTHORS 1.6:

Index: README
===================================================================
RCS file: /cvsroot/phpshell/phpshell/README,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -d -r1.5 -r1.6
--- README      13 Jan 2006 17:34:25 -0000      1.5
+++ README      13 Jan 2006 17:38:31 -0000      1.6
@@ -1,5 +1,5 @@
-README for PhpShell 1.9
-Copyright (C) 2000-2003 Martin Geisler <[EMAIL PROTECTED]>
+README for PhpShell 2.0
+Copyright (C) 2000-2004 Martin Geisler <[EMAIL PROTECTED]>
 Licensed under the GNU GPL.  See the file COPYING for details.
 
 What is PhpShell?
@@ -20,7 +20,7 @@
 programs have to be strictly command-line programs, and they will have
 no chance of getting user input after they have been lunched.  They
 probably also have to terminate within 30 seconds, as this is the
-default time-limit imposed unto all PHP-scripts, to prevent them from
+default time-limit imposed unto all PHP scripts, to prevent them from
 running in an infinite loop.  Your ISP may have set this time-limit to
 something else.
 
@@ -51,9 +51,8 @@
 You may not be the same user when using PhpShell, as you are when you
 upload your files with ftp.  On some systems you will be 'nobody', on
 other systems you will become 'httpd' or 'www-data'.  This is a rather
-dangerous "feature" of PhpShell! So use it at your own risk --- I
-wont be responsible if your account is closed or something like that
-happens.
+dangerous "feature" of PhpShell! So use it at your own risk and
+remember to choose a good password as described in the INSTALL file.
 
 If you want to execute code as different user, then it's possible to
 do so by using the Sudo program available from this address:
@@ -66,47 +65,26 @@
 this.
 
 
-How to use it
+How to Use It
 -------------
 When you point your browser at PhpShell and types in your password
 (see the file INSTALL for more information on how to change the
-password), you'll be presented with a rather simple page.  It has the
-following elements:
-
-The Command Input box:
-  Here you can type a command, and when you press the "Execute" button
-  the command will be executed in the current working directory.
-
-  If your command is 'cd something', then it won't be executed like an
-  ordinary command --- the current working directory will be updated
-  instead.  This works with both relative and absolute paths.
-
-  And if your command is 'ls', then it will be changed to 'ls -F'.
-  This makes ls append indicators to the filenames: directories end with 
-  a slash, executable files will end with an asterisk and so on.
+password), you'll be presented with a rather simple page containing
+nothing much except a big window with the cursor blinking at the
+bottom, signaling that it's ready to obey your commands.
 
-The current working directory:
-  This is the directory where all command are being executed.  You can
-  use the dropdown-box to choose a new working directory.  To quickly
-  jump toward the root of the filesystem, just click on one of the
-  links to jump to that directory.
+Write a command and press RET --- or alternatively, press the 'Execute
+Command' button if you insist.  The command will be executed and the
+result will be shows in the terminal.  You can now enter another
+command.
 
-The Output
-  Here goes the output from your commands.  You will be able to scroll
-  thought the box if the output is to large to fit inside.  It is only
-  output to stdout that goes into the Output box.  This can be rather
-  confusing, because then sometimes you just don't get any output.
-  I've made a workaround, that fixes the problem most of the time.  If
-  you select "Enable stderr-trapping" your command <cmd> will be
-  executed this way:
-  
-  <cmd> 1> /tmp/output.txt 2>&1; cat /tmp/output.txt; rm /tmp/output.txt
+To be more precise: the terminal is updated with the command line you
+have just executed, the output of the command to standard out (stdout)
+and following that any error output sent to stderr.
 
-  It is done by simply appending the arguments to your command.  It
-  redirects all output from your command to a file, both stdout and
-  stderr.  It then shows the file, and cleans things up when finished.
-  It's quick and dirty, and will only work if you haven't already
-  redirected the output.
+The commands are executed relative to a current working directory,
+which is written at the top.  You change this by the normal 'cd'
+command.
 
 
 Download
@@ -126,7 +104,6 @@
   This file :-)
 
 INSTALL
-
   Tells you how to install PhpShell.  Amoung other things, it
   explains how to change the password protection so that you can use
   PhpShell.
@@ -140,4 +117,4 @@
   PhpShell.
 
 COPYING
-  Standard GNU disclaimer
+  Standard GNU disclaimer.

Index: phpshell.css
===================================================================
RCS file: /cvsroot/phpshell/phpshell/phpshell.css,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -d -r1.1 -r1.2
--- phpshell.css        13 Jan 2006 17:29:47 -0000      1.1
+++ phpshell.css        13 Jan 2006 17:38:31 -0000      1.2
@@ -12,9 +12,26 @@
 }
 
 img {
-  border: 0;
+  border: none;
 }
 
-legend {
-  font-weight: bold;
+div {
+  border: inset 2px red;
+}
+
+textarea { 
+  width: 100%;
+  border: none;
+  padding: 2px 2px 0px;
+}
+
+p.prompt {
+  font-family: monospace;
+  margin: 0px;
+  padding: 0px 2px 2px;
+}
+
+input.prompt {
+  border: none;
+  font-family: monospace;
 }

Index: INSTALL
===================================================================
RCS file: /cvsroot/phpshell/phpshell/INSTALL,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -d -r1.4 -r1.5
--- INSTALL     13 Jan 2006 17:34:25 -0000      1.4
+++ INSTALL     13 Jan 2006 17:38:31 -0000      1.5
@@ -1,19 +1,20 @@
-Installation instructions for PhpShell 1.9
-Copyright (C) 2000-2003 Martin Geisler <[EMAIL PROTECTED]>
+Installation instructions for PhpShell 2.0
+Copyright (C) 2000-2004 Martin Geisler <[EMAIL PROTECTED]>
 Licensed under the GNU GPL.  See the file COPYING for details.
 
 
-Getting the tarball
+Getting the Tarball
 -------------------
-You can always get the latest version from my homepage:
+You can always get the latest version of PhpShell from my homepage:
 
   http://www.gimpster.com/wiki/PhpShell
 
 
 Installation
 ------------
-Installation is easy: first unpack the tarball or zipfile into your
-webserver.  This will create a subdirectory called phpweather-1.9.
+Installation is easy: first unpack the tarball or zipfile downloaded
+from the above website into your webserver.  This will create a
+subdirectory called phpweather-2.0 for PhpShell version 2.0.
 
 If you're using PhpShell on an Apache webserver running PHP as a
 module, then PhpShell wont work until you've edited phpshell.php.  You
@@ -29,20 +30,42 @@
 
   $passwd = array('username' => 'password');
 
+This can be expanded to multiple users with their own passwords in a
+very simple way:
+
+  $passwd = array('username_1' => 'password_1',
+                  'username_2' => 'password_2',
+                  // ...
+                  'username_n' => 'password_n');
+
 It is important that you password-protect PhpShell with a good
 password.  If someone is able to guess your password, then they'll
 have access to your webserver over the Internet, and they might be
 able to erase your files, and perhaps even shutdown the webserver!  So
 be careful with this and remember that you can always find the usual
-disclaimer in the file LICENSE.  (This software is licensed under GPL,
-I'm not responsible if you blow things up, etc... :-)
+disclaimer in the file LICENSE.
+
+
+Shell Aliases
+-------------
+
+As in a normal shell, PhpShell supports a simple form of aliases.
+Simply edit the $aliases array at the top of phpshell.php.  The keys
+in the array are substituted for their corresponding values before the
+commands are executed --- a couple of convenient aliases are already
+defined:
+
+  $aliases = array('ls' => 'ls -CvhF',
+                   'll' => 'ls -lvhF');
 
 
 Safe Mode
 ---------
 PhpShell doesn't work if PHP is running in Safe Mode.  There is
 nothing I can do about this --- Safe Mode was made to prevent scripts
-just like PhpShell.
+just like PhpShell.  So if you're worried that people will be able to
+destroy your website using a tool like PhpShell, then tell your
+provider to enable Safe Mode as this makes PHP much less evil.
 
 
 Bugs?

Index: phpshell.php
===================================================================
RCS file: /cvsroot/phpshell/phpshell/phpshell.php,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -d -r1.5 -r1.6
--- phpshell.php        13 Jan 2006 17:34:25 -0000      1.5
+++ phpshell.php        13 Jan 2006 17:38:31 -0000      1.6
@@ -3,15 +3,15 @@
 /*
 
   **************************************************************
-  *                      PhpShell 1.9                          *
+  *                      PhpShell 2.0                          *
   **************************************************************
   $Id$
 
-  PhpShell is an interactive PHP-page that will execute any command
+  PhpShell is an interactive PHP script that will execute any command
   entered. See the files README and INSTALL or
   http://www.gimpster.com/wiki/PhpShell for further information.
 
-  Copyright (C) 2000-2003 Martin Geisler <[EMAIL PROTECTED]>
+  Copyright (C) 2000-2004 Martin Geisler <[EMAIL PROTECTED]>
 
   This program is free software; you can redistribute it and/or
   modify it under the terms of the GNU General Public License
@@ -45,15 +45,127 @@
 */
 $passwd = array();
 
+/* Set your aliases here.  Each key in the array will be substituted
+ * with the corresponding value before the commands are executed. */
+$aliases = array('ls' => 'ls -CvhF',
+                 'll' => 'ls -lvhF');
+
 if (!isset($_SERVER['PHP_AUTH_USER']) ||
     !isset($_SERVER['PHP_AUTH_PW']) ||
     !isset($passwd[$_SERVER['PHP_AUTH_USER']]) ||
     $passwd[$_SERVER['PHP_AUTH_USER']] != $_SERVER['PHP_AUTH_PW']) {
-  header('WWW-Authenticate: Basic realm="PhpShell 1.9"');
+  header('WWW-Authenticate: Basic realm="PhpShell 2.0"');
   header('HTTP/1.0 401 Unauthorized');
   $authenticated = false;
 } else {
   $authenticated = true;
+
+  /* We now start the session. */
+  session_start();
+  
+  /* Initialize the session variables. */
+  if (empty($_SESSION['cwd']) || !empty($_REQUEST['reset'])) {
+    $_SESSION['cwd'] = getcwd();
+    $_SESSION['history'] = array();
+    $_SESSION['output'] = '';
+  }
+  
+  if (!empty($_REQUEST['command'])) {
+    if (get_magic_quotes_gpc()) {
+      /* We don't want to add the commands to the history in the
+       * escaped form, so we remove the backslashes now. */
+      $_REQUEST['command'] = stripslashes($_REQUEST['command']);
+    }
+
+    /* Save the command for late use in the JavaScript.  If the
+     * command is already in the history, then the old entry is
+     * removed before the new entry is put into the list at the
+     * front. */
+    if (($i = array_search($_REQUEST['command'], $_SESSION['history'])) !== 
false)
+      unset($_SESSION['history'][$i]);
+    
+    array_unshift($_SESSION['history'], $_REQUEST['command']);
+  
+    /* Now append the commmand to the output. */
+    $_SESSION['output'] .= '$ ' . $_REQUEST['command'] . "\n";
+
+    /* Initialize the current working directory. */
+    if (ereg('^[[:blank:]]*cd[[:blank:]]*$', $_REQUEST['command'])) {
+      $_SESSION['cwd'] = dirname(__FILE__);
+    } elseif (ereg('^[[:blank:]]*cd[[:blank:]]+([^;]+)$', 
$_REQUEST['command'], $regs)) {
+      /* The current command is a 'cd' command which we have to handle
+       * as an internal shell command. */
+
+      if ($regs[1][0] == '/') {
+        /* Absolute path, we use it unchanged. */
+        $new_dir = $regs[1];
+      } else {
+        /* Relative path, we append it to the current working
+         * directory. */
+        $new_dir = $_SESSION['cwd'] . '/' . $regs[1];
+      }
+      
+      /* Transform '/./' into '/' */
+      while (strpos($new_dir, '/./') !== false)
+        $new_dir = str_replace('/./', '/', $new_dir);
+
+      /* Transform '//' into '/' */
+      while (strpos($new_dir, '//') !== false)
+        $new_dir = str_replace('//', '/', $new_dir);
+
+      /* Transform 'x/..' into '' */
+      while (preg_match('|/\.\.(?!\.)|', $new_dir))
+        $new_dir = preg_replace('|/?[^/]+/\.\.(?!\.)|', '', $new_dir);
+      
+      if ($new_dir == '') $new_dir = '/';
+      
+      /* Try to change directory. */
+      if (@chdir($new_dir)) {
+        $_SESSION['cwd'] = $new_dir;
+      } else {
+        $_SESSION['output'] .= "cd: could not change to: $new_dir\n";
+      }
+      
+    } else {
+      /* The command is not a 'cd' command, so we execute it after
+       * changing the directory and save the output. */
+      chdir($_SESSION['cwd']);
+
+      /* Alias expansion. */
+      $length = strcspn($_REQUEST['command'], " \t");
+      $token = substr($_REQUEST['command'], 0, $length);
+      if (isset($aliases[$token]))
+        $_REQUEST['command'] = $aliases[$token] . substr($_REQUEST['command'], 
$length);
+    
+      $p = proc_open($_REQUEST['command'],
+                     array(1 => array('pipe', 'w'),
+                           2 => array('pipe', 'w')),
+                     $io);
+
+      /* Read output sent to stdout. */
+      while (!feof($io[1])) {
+        $_SESSION['output'] .= htmlspecialchars(fgets($io[1]),
+                                                ENT_COMPAT, 'UTF-8');
+      }
+      /* Read output sent to stderr. */
+      while (!feof($io[2])) {
+        $_SESSION['output'] .= htmlspecialchars(fgets($io[2]),
+                                                ENT_COMPAT, 'UTF-8');
+      }
+      
+      fclose($io[1]);
+      fclose($io[2]);
+      proc_close($p);
+    }
+  }
+
+  /* Build the command history for use in the JavaScript */
+  if (empty($_SESSION['history'])) {
+    $js_command_hist = '""';
+  } else {
+    $escaped = array_map('addslashes', $_SESSION['history']);
+    $js_command_hist = '"", "' . implode('", "', $escaped) . '"';
+  }
 }
 
 header('Content-Type: text/html; charset=UTF-8');
@@ -65,13 +177,43 @@
     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd";>
 <html xmlns="http://www.w3.org/1999/xhtml"; xml:lang="en" lang="en">
 <head>
-  <title>PhpShell 1.9</title>
+  <title>PhpShell 2.0</title>
   <link rel="stylesheet" href="phpshell.css" type="text/css" />
+
+  <script type="text/javascript" language="JavaScript">
+  var current_line = 0;
+  var command_hist = new Array(<?php echo $js_command_hist ?>);
+  var last = 0;
+
+  function key(e) {
+    if (!e) var e = window.event;
+
+    if (e.keyCode == 38 && current_line < command_hist.length-1) {
+      command_hist[current_line] = document.shell.command.value;
+      current_line++;
+      document.shell.command.value = command_hist[current_line];
+    }
+
+    if (e.keyCode == 40 && current_line > 0) {
+      command_hist[current_line] = document.shell.command.value;
+      current_line--;
+      document.shell.command.value = command_hist[current_line];
+    }
+
+  }
+
+function init() {
+  document.shell.setAttribute("autocomplete", "off");
+  document.shell.output.scrollTop = document.shell.output.scrollHeight;
+  document.shell.command.focus();
+}
+
+  </script>
 </head>
 
-<body onload="document.forms[0].command.focus();">
+<body onload="init()">
 
-<h1>PhpShell 1.9</h1>
+<h1>PhpShell 2.0</h1>
 
 <?php if (!$authenticated) { ?>
 <p>You failed to authenticate yourself to PhpShell. You can <a
@@ -89,141 +231,43 @@
 
 error_reporting (E_ALL);
 
-$work_dir = empty($_REQUEST['work_dir']) ? '' : $_REQUEST['work_dir'];
-$command  = empty($_REQUEST['command'])  ? '' : $_REQUEST['command'];
-$stderr   = empty($_REQUEST['stderr'])   ? '' : $_REQUEST['stderr'];
-
-/* First we check if there has been asked for a working directory. */
-if ($work_dir != '') {
-  /* A workdir has been asked for */
-  if ($command != '') {
-    if (ereg('^[[:blank:]]*cd[[:blank:]]+([^;]+)$', $command, $regs)) {
-      /* We try and match a cd command. */
-      if ($regs[1][0] == '/') {
-        $new_dir = $regs[1]; // 'cd /something/...'
-      } else {
-        $new_dir = $work_dir . '/' . $regs[1]; // 'cd somedir/...'
-        $new_dir = str_replace('/./', '/', $new_dir);
-        $new_dir = preg_replace('|/?[^/]*/\.\.|', '$1', $new_dir);
-      }
-      if (file_exists($new_dir) && is_dir($new_dir)) {
-        $work_dir = $new_dir;
-      }
-      $command = '';
-    }
-  }
-}
-
-if ($work_dir != '' && file_exists($work_dir) && is_dir($work_dir)) {
-  /* We change directory to that dir: */
-  chdir($work_dir);
-}
+if (empty($_REQUEST['rows'])) $_REQUEST['rows'] = 24;
 
-/* We now update $work_dir to avoid things like '/foo/../bar': */
-if ($work_dir == '') $work_dir = getcwd();
 ?>
 
-<form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post">
-<fieldset><legend>Input</legend>
-<p>Current working directory: <b>
-<?php
-
-$work_dir_splitted = explode('/', substr($work_dir, 1));
-
-echo '<a href="' . $_SERVER['PHP_SELF'] . '?work_dir=/">Root</a>/';
-
-if (!empty($work_dir_splitted[0])) {
-  $path = '';
-  for ($i = 0; $i < count($work_dir_splitted); $i++) {
-    $path .= '/' . $work_dir_splitted[$i];
-    printf('<a href="%s?work_dir=%s">%s</a>/',
-           $_SERVER['PHP_SELF'],
-           urlencode($path),
-           $work_dir_splitted[$i]);
-  }
-}
+<p>Current Working Directory: <code><?php echo $_SESSION['cwd'] ?></code></p>
 
-?></b></p>
-<p>Choose new working directory:
-<select name="work_dir" onchange="this.form.submit()">
+<form name="shell" action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post">
+<div>
+<textarea name="output" readonly="readonly" cols="80" rows="<?php echo 
$_REQUEST['rows'] ?>">
 <?php
-/* Now we make a list of the directories. */
-$dir_handle = opendir($work_dir);
-/* We store the output so that we can sort it later: */
-$options = array();
-/* Run through all the files and directories to find the dirs. */
-while ($dir = readdir($dir_handle)) {
-  if (is_dir($dir)) {
-    if ($dir == '.') {
-      $options['.'] = "<option value=\"$work_dir\" 
selected=\"selected\">Current Directory</option>";
-    } elseif ($dir == '..') {
-      /* We have found the parent dir. We must be carefull if the
-       * parent directory is the root directory (/). */
-      if (strlen($work_dir) == 1) {
-       /* work_dir is only 1 charecter - it can only be / There's no
-         * parent directory then. */
-      } elseif (strrpos($work_dir, '/') == 0) {
-       /* The last / in work_dir were the first charecter.  This
-         * means that we have a top-level directory eg. /bin or /home
-         * etc... */
-        $options['..'] = "<option value=\"/\">Parent Directory</option>";
-      } else {
-        /* We do a little bit of string-manipulation to find the parent
-         * directory... Trust me - it works :-) */
-        $options['..'] = "<option value=\"" .
-          strrev(substr(strstr(strrev($work_dir), "/"), 1)) .
-          "\">Parent Directory</option>";
-      }
-    } else {
-      if ($work_dir == '/') {
-       $options[$dir] = "<option value=\"/$dir\">$dir</option>";
-      } else {
-       $options[$dir] = "<option value=\"$work_dir/$dir\">$dir</option>";
-      }
-    }
-  }
-}
-closedir($dir_handle);
-
-ksort($options);
-
-echo implode("\n", $options)
-
+$lines = substr_count($_SESSION['output'], "\n");
+$padding = str_repeat("\n", max(0, $_REQUEST['rows']+1 - $lines));
+echo rtrim($padding . $_SESSION['output']);
 ?>
+</textarea>
+<p class="prompt">
+  $&nbsp;<input class="prompt" name="command" type="text"
+                onkeyup="key(event)" size="78" tabindex="1">
+</p>
+</div>
+<p>
+  <input type="submit" value="Execute Command" />
+  <input type="submit" name="reset" value="Reset" />
+  Rows: <input type="text" name="rows" value="<?php echo $_REQUEST['rows'] ?>" 
/>
+</p>
+</form>
 
-</select></p>
-
-<p>Command: <input type="text" name="command" size="60" /></p>
-
-<p>Enable <code>stderr</code>-trapping? <input type="checkbox" name="stderr"
-<?php if ($stderr) echo "checked=\"checked\""; ?> /> <input name="submit_btn" 
type="submit" value="Execute Command" /></p>
-</fieldset>
-
-<fieldset><legend>Output</legend>
-
-<p><textarea cols="80" rows="20" readonly="readonly">
-<?php
-if (!empty($command)) {
-  if ($command == 'ls') {
-    /* ls looks much better with ' -F', IMHO. */
-    $command .= ' -F';
-  }
-  if ($stderr) {
-    $tmpfile = tempnam('/tmp', 'phpshell');
-    $command .= " 1> $tmpfile 2>&1; cat $tmpfile; rm $tmpfile";
-  }
-  echo htmlspecialchars(shell_exec($command), ENT_COMPAT, 'UTF-8');
-}
-?>
-</textarea></p>
+<hr />
 
-</fieldset>
-</form>
+<p>Please consult the <a href="README">README</a> and <a
+href="INSTALL">INSTALL</a> files for instruction on how to use
+PhpShell.</p>
 
 <hr />
 
 <address>
-Copyright &copy; 2000&ndash;2003, <a
+Copyright &copy; 2000&ndash;2004, <a
 href="mailto:[EMAIL PROTECTED]">Martin Geisler</a>. Get the
 latest version at <a
 
href="http://www.gimpster.com/wiki/PhpShell";>www.gimpster.com/wiki/PhpShell</a>.
@@ -231,13 +275,11 @@
 
 <p>
   <a href="http://validator.w3.org/check/referer";>
-    <img src="valid-xhtml10" alt="Valid XHTML 1.0 Strict!"
+    <img src="valid-xhtml10.png" alt="Valid XHTML 1.0 Strict!"
          height="31" width="88" />
   </a>
   <a href="http://jigsaw.w3.org/css-validator/check/referer";>
-    <img src="http://jigsaw.w3.org/css-validator/images/vcss";
-         width="88" height="31"
-         alt="Valid CSS!" />
+    <img src="vcss.png" alt="Valid CSS!" width="88" height="31" />
   </a>
 </p>
 

Index: release.sh
===================================================================
RCS file: /cvsroot/phpshell/phpshell/release.sh,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -d -r1.1 -r1.2
--- release.sh  13 Jan 2006 17:34:25 -0000      1.1
+++ release.sh  13 Jan 2006 17:38:31 -0000      1.2
@@ -2,7 +2,7 @@
 
 #set -x
 
-VERSION=1.9
+VERSION=2.0
 
 echo "Releasing phpshell-$VERSION:"
 



-------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc. Do you grep through log files
for problems?  Stop!  Download the new AJAX search engine that makes
searching your log files as easy as surfing the  web.  DOWNLOAD SPLUNK!
http://ads.osdn.com/?ad_id=7637&alloc_id=16865&op=click
_______________________________________________
phpshell-commits mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/phpshell-commits

Reply via email to