diff --git a/lib/master.pike.in b/lib/master.pike.in
index 294d222b11f9e5cfbfb743bfecfd964c031c7a2f..a5573bf54c84c4f520424b0ff957a97d6ed005e6 100644
--- a/lib/master.pike.in
+++ b/lib/master.pike.in
@@ -6,7 +6,7 @@
 // Pike is distributed under GPL, LGPL and MPL. See the file COPYING
 // for more information.
 //
-// $Id: master.pike.in,v 1.387 2006/06/08 11:37:01 mast Exp $
+// $Id: master.pike.in,v 1.388 2006/11/04 19:08:24 nilsson Exp $
 
 #pike __REAL_VERSION__
 //#pragma strict_types
@@ -734,10 +734,10 @@ static string base_from_filename(string fname)
   if (has_prefix(low_name, ".#")) return 0;
   if (has_suffix(low_name, ".pike") ||
       has_suffix(low_name, ".pmod")) {
-    return fname[..sizeof(fname)-6];
+    return fname[..<5];
   }
   if (has_suffix(low_name, ".so")) {
-    return fname[..sizeof(fname)-4];
+    return fname[..<3];
   }
   return 0;
 }
diff --git a/lib/modules/Array.pmod b/lib/modules/Array.pmod
index b4b64fde5778ebab3260dd3fc7824b2dd687d3c7..cb063259fd5b4a59c1b3afce4b2f4b0c147a642d 100644
--- a/lib/modules/Array.pmod
+++ b/lib/modules/Array.pmod
@@ -783,7 +783,7 @@ array pop(array list) {
     return ({ list[0], ({}) });
   else if (sizeof(list) > 1) {
     mixed elem = list[sizeof(list)-1];
-    list = list[0..sizeof(list)-2];
+    list = list[..<1];
     return ({ elem, list });
   }
 }
diff --git a/lib/modules/Calendar.pmod/Time.pmod b/lib/modules/Calendar.pmod/Time.pmod
index 3cd9796faa6acd53e80ae2077e00d9bee9401f9f..c90b4fa2bef73985257da53456f8eb681453c6a0 100644
--- a/lib/modules/Calendar.pmod/Time.pmod
+++ b/lib/modules/Calendar.pmod/Time.pmod
@@ -1027,7 +1027,7 @@ class TimeofDay
    {									\
       _ind+=IND;							\
       TimeRange x=::OP(@args);						\
-      _ind=_ind[..sizeof(_ind)-sizeof(IND)-1];				\
+      _ind=_ind[..<sizeof(IND)];				\
       werror(_ind+"  %O\n",this);					\
       foreach (args,TimeRange t) werror(_ind+NAME+" %O\n",t);		\
       werror(_ind+"= %O\n",x);						\
@@ -1115,7 +1115,7 @@ class cSuperTimeRange
       int from=0,to=0x7fffffff,pos=0;
       array res=({});
       TimeRange last=0;
-      string ums=unit[..sizeof(unit)-2]; // no 's'
+      string ums=unit[..<1]; // no 's'
 
       if (sizeof(range)==2)
 	 [from,to]=range;
@@ -1151,7 +1151,7 @@ class cSuperTimeRange
    {
       int pos=0;
       TimeRange last=0;
-      string ums=unit[..sizeof(unit)-2]; // no 's'
+      string ums=unit[..<1]; // no 's'
 
       foreach (parts,TimeRange part)
       {
@@ -1673,7 +1673,7 @@ class cFraction
 	    return;
 	 case "unix_r":
 	    rules=args[-1];
-	    create_unixtime(@args[..sizeof(args)-2]);
+	    create_unixtime(@args[..<1]);
 	    return;
 	 case "julian_r":
 	    rules=args[2];
diff --git a/lib/modules/Calendar.pmod/Timezone.pmod b/lib/modules/Calendar.pmod/Timezone.pmod
index 70572acc42284535197d029088d676af1842a7ab..908b2232e166d835f991a651a60f5725afedbb3d 100644
--- a/lib/modules/Calendar.pmod/Timezone.pmod
+++ b/lib/modules/Calendar.pmod/Timezone.pmod
@@ -766,7 +766,7 @@ class Runtime_timezone_compiler
 		  lastoffset=s->offset;
 	       }
 	       tr[-3]=replace(tr[-3],",  ","});");
-	       sr=tr[..sizeof(tr)-2]+sr;
+	       sr=tr[..<1]+sr;
 	    }
 	 res+=sr+
 	 ({"      }\n"
@@ -1005,7 +1005,7 @@ class Runtime_timezone_compiler
 		    lambda(string s) { return sprintf("%O",s); })*",",
 		"});\n",
 		"array(int) shifts=({"});
-	 foreach (rules[..sizeof(rules)-2],array a)
+	 foreach (rules[..<1],array a)
 	    res+=({a[5]+","});
 	 res+=({"});\n",
 		sprintf(
diff --git a/lib/modules/Calendar.pmod/YMD.pike b/lib/modules/Calendar.pmod/YMD.pike
index 566f4039fde11895d5991e149ba77c579a2161ea..ef9a9d5f66f630eba770adb466c2c68fe1de8681 100644
--- a/lib/modules/Calendar.pmod/YMD.pike
+++ b/lib/modules/Calendar.pmod/YMD.pike
@@ -940,7 +940,7 @@ class YMD
 		  if (uq>=step) uq%=step;
 		  z= z[..i-1]+
 		  ({z[i]->set_size(uq,sec)})+
-		     map(z[i..sizeof(z)-2],"add",uq,sec);
+		     map(z[i..<1],"add",uq,sec);
 		  i++;
 	       }
 	       uo=z[i]->utc_offset();
@@ -2588,7 +2588,7 @@ static TimeRange dwim_zone(TimeRange origin,string zonename,
    if(sizeof(zonename)==4 && zonename[2]=='S')
      zonename = zonename[0..1] + zonename[3..3];
    else if(sizeof(zonename)>4 && has_suffix(zonename, "DST"))
-     zonename = zonename[..sizeof(zonename)-1-3];
+     zonename = zonename[..<3];
 
    if (origin->rules->abbr2zone[zonename])
       zonename=origin->rules->abbr2zone[zonename];
diff --git a/lib/modules/Calendar.pmod/mkrules.pike b/lib/modules/Calendar.pmod/mkrules.pike
index 8aef3ebab97edbd5d4dce1d90fee311666c6e6f2..5a206fa32919c80cc400b153b980c44149f40495 100644
--- a/lib/modules/Calendar.pmod/mkrules.pike
+++ b/lib/modules/Calendar.pmod/mkrules.pike
@@ -10,7 +10,7 @@
 // and zic(8) is the usual compiler.
 
 // pike mkrules.pike ../data/{africa,antarctica,asia,australasia,backward,etcetera,europe,northamerica,pacificnew,southamerica,systemv}
-// $Id: mkrules.pike,v 1.10 2004/01/11 00:51:23 nilsson Exp $
+// $Id: mkrules.pike,v 1.11 2006/11/04 19:06:48 nilsson Exp $
 
 #pike __REAL_VERSION__
 
@@ -397,7 +397,7 @@ class MyRule
 	    array resa=res/"\n";
 	    resa[-2]=replace(resa[-2],",  ","});");
 	 
-	    t+=resa[..sizeof(resa)-2]*"\n"+"\n";
+	    t+=resa[..<1]*"\n"+"\n";
 	    s=t+s;
 	 }
       res+=(s+
diff --git a/lib/modules/Crypto.pmod/DSA.pike b/lib/modules/Crypto.pmod/DSA.pike
index 27e87d0369a109ac126c2ae95b9f7087b9eba34b..1efd7938c096e8f25c7934d056ef020b70cd0eeb 100644
--- a/lib/modules/Crypto.pmod/DSA.pike
+++ b/lib/modules/Crypto.pmod/DSA.pike
@@ -178,7 +178,7 @@ array(Gmp.mpz) nist_primes(int l)
 
     string h = nist_hash(s) ^ nist_hash( [object(Gmp.mpz)](s + 1) );
 
-    h = sprintf("%c%s%c", h[0] | 0x80, h[1..sizeof(h) - 2], h[-1] | 1);
+    h = sprintf("%c%s%c", h[0] | 0x80, h[1..<1], h[-1] | 1);
 
     Gmp.mpz q = Gmp.mpz(h, 256);
 
diff --git a/lib/modules/Crypto.pmod/PGP.pmod b/lib/modules/Crypto.pmod/PGP.pmod
index cd365f01e4625a181ef4887f7b6247979e14208d..ecbe7225479552231c8ccffda18c6de582f03e48 100644
--- a/lib/modules/Crypto.pmod/PGP.pmod
+++ b/lib/modules/Crypto.pmod/PGP.pmod
@@ -1,5 +1,5 @@
 //
-// $Id: PGP.pmod,v 1.12 2004/04/29 01:03:32 nilsson Exp $
+// $Id: PGP.pmod,v 1.13 2006/11/04 19:06:48 nilsson Exp $
 
 //! PGP stuff. See RFC 2440.
 
@@ -346,7 +346,7 @@ mapping(string:mixed) decode_radix64(string data) {
 
   if(lines[-1][0]=='=') {
     ret->checksum = (int)Gmp.mpz(MIME.decode_base64(lines[-1][1..]),256);
-    lines = lines[..sizeof(lines)-2];
+    lines = lines[..<1];
   }
 
   ret->data = MIME.decode_base64(lines*"\n");
diff --git a/lib/modules/Debug.pmod/Subject.pike b/lib/modules/Debug.pmod/Subject.pike
index f18a3b9fd3b6c62c5bf3bfc0f9e9b4cb884112ac..74913acddeede19434911f31ab910bba5c36cd7c 100644
--- a/lib/modules/Debug.pmod/Subject.pike
+++ b/lib/modules/Debug.pmod/Subject.pike
@@ -1,4 +1,4 @@
-// $Id: Subject.pike,v 1.7 2002/11/24 19:47:42 nilsson Exp $
+// $Id: Subject.pike,v 1.8 2006/11/04 19:06:48 nilsson Exp $
 
 #pike __REAL_VERSION__
 
@@ -32,7 +32,7 @@
 #define ENTER(X)                       \
   string t = sprintf("%{%O, %}", args); \
   werror("%s%s(%s)\n", id, #X,           \
-	 has_suffix(t, ", ") ? t[..sizeof(t)-3] : t)
+	 has_suffix(t, ", ") ? t[..<2] : t)
 
 #define PROXY(X,Y) X(mixed ... args) { ENTER(X); return Y; }
 
@@ -99,7 +99,7 @@ array PROXY(_values, ::_values());
 object _get_iterator(mixed ... args)
 {
   ENTER(_get_iterator);
-  string iid = id==""?"":id[1..sizeof(id)-3];
+  string iid = id==""?"":id[1..<2];
   return this_program("("+iid+" iterator) ");
 }
 
@@ -118,11 +118,11 @@ string _sprintf(int|void t, mapping|void opt, mixed ... x)
   }
   string tmp = sprintf("%{%O, %}", x);
   if(has_suffix(tmp, ", "))
-    tmp = tmp[..sizeof(tmp)-3];
+    tmp = tmp[..<2];
   if(sizeof(tmp))
     args += ", " + tmp;
   werror("%s_sprintf(%s)\n", id, args);
-  return "Debug.Subject" + id[..sizeof(id)-2];
+  return "Debug.Subject" + id[..<1];
 }
 
 mixed PROXY(_random, 0);
diff --git a/lib/modules/Filesystem.pmod/System.pike b/lib/modules/Filesystem.pmod/System.pike
index 88180e05fa7ad0f4beabf286f36e1d9c5c12c05f..e1195a8e3fc3121b88dee348bd9c7cb218b933ff 100644
--- a/lib/modules/Filesystem.pmod/System.pike
+++ b/lib/modules/Filesystem.pmod/System.pike
@@ -74,7 +74,7 @@ static void create(void|string directory,  // default: cwd
     while( sizeof(directory) && directory[0] == '/' )
       directory = directory[1..];
     while( sizeof(directory) && directory[-1] == '/' )
-      directory = directory[..sizeof(directory)-2];
+      directory = directory[..<1];
 #ifdef __NT__
     if( sizeof( directory ) != 2 || directory[1] != ':' )
 #endif
@@ -84,7 +84,7 @@ static void create(void|string directory,  // default: cwd
   while( sizeof(directory) && directory[0] == '/' )
     directory = directory[1..];
   while( sizeof(directory) && directory[-1] == '/' )
-    directory = directory[..sizeof(directory)-2];
+    directory = directory[..<1];
   wd = directory;
 }
 
@@ -133,7 +133,7 @@ Filesystem.Stat stat(string file, int|void lstat)
 #ifdef __NT__
    file = replace( file, "\\", "/" );
    while( sizeof(file) && file[-1] == '/' )
-     file = file[..sizeof(file)-2];
+     file = file[..<1];
 #endif
    string full = combine_path(wd, file);
    if ( full!="" && full[0]=='/') full=full[1..];
@@ -158,7 +158,7 @@ array(string) get_dir(void|string directory, void|string|array(string) globs)
   {
     directory = replace( directory, "\\", "/" );
     while( sizeof(directory) && directory[-1] == '/' )
-      directory = directory[..sizeof(directory)-2];
+      directory = directory[..<1];
   }
 #endif
   directory = directory ? combine_path(wd, directory) : wd;
@@ -190,7 +190,7 @@ array(Filesystem.Stat) get_stats(void|string directory,
   {
     directory = replace( directory, "\\", "/" );
     while( sizeof(directory) && directory[-1] == '/' )
-      directory = directory[..sizeof(directory)-2];
+      directory = directory[..<1];
   }
 #endif
   if(directory &&
diff --git a/lib/modules/Filesystem.pmod/Tar.pmod b/lib/modules/Filesystem.pmod/Tar.pmod
index 3653fdf9473be54f624d60ee7492cda8baac4437..61fe3b8513a66f22f357ac9eee506904144486db 100644
--- a/lib/modules/Filesystem.pmod/Tar.pmod
+++ b/lib/modules/Filesystem.pmod/Tar.pmod
@@ -1,5 +1,5 @@
 /*
- * $Id: Tar.pmod,v 1.28 2004/11/20 17:04:43 nilsson Exp $
+ * $Id: Tar.pmod,v 1.29 2006/11/04 19:06:48 nilsson Exp $
  */
 
 #pike __REAL_VERSION__
@@ -234,8 +234,8 @@ class _Tar  // filesystem
     foreach(entries, Record r)
     {
       array path = r->fullpath/"/";
-      if(path[..sizeof(path)-2]==last) continue; // same dir
-      last = path[..sizeof(path)-2];
+      if(path[..<1]==last) continue; // same dir
+      last = path[..<1];
 
       for(int i = 0; i<sizeof(last); i++)
 	if(!filename_to_entry[last[..i]*"/"])
diff --git a/lib/modules/GTKSupport.pmod/MenuFactory.pmod b/lib/modules/GTKSupport.pmod/MenuFactory.pmod
index 05918003ed8915d6417a6289f7acafaf851e6bb0..1277b53503438ae47a8c88efc8102a0e44e7a361 100644
--- a/lib/modules/GTKSupport.pmod/MenuFactory.pmod
+++ b/lib/modules/GTKSupport.pmod/MenuFactory.pmod
@@ -270,7 +270,7 @@ array(object) PopupMenuFactory( MenuDef ... definition )
     string path="";
     object parent = bar;
     array p = d->menu_path/"/";
-    foreach(p[..sizeof(p)-2], string segment)
+    foreach(p[..<1], string segment)
     {
       path += segment+"/";
       if(!submenues[path])
@@ -361,7 +361,7 @@ array(object) MenuFactory( MenuDef ... definition )
     string path="";
     object parent = bar;
     array p = d->menu_path/"/";
-    foreach(p[..sizeof(p)-2], string segment)
+    foreach(p[..<1], string segment)
     {
       path += segment+"/";
       if(!submenues[path])
diff --git a/lib/modules/Graphics.pmod/Graph.pmod/create_graph.pike b/lib/modules/Graphics.pmod/Graph.pmod/create_graph.pike
index 832bd57d75d876ac2aa9d83bba46c48cfe83a59a..8250481e4ddadf9afdca3c5357b4a5489ea59594 100755
--- a/lib/modules/Graphics.pmod/Graph.pmod/create_graph.pike
+++ b/lib/modules/Graphics.pmod/Graph.pmod/create_graph.pike
@@ -944,7 +944,7 @@ mapping(string:mixed) create_graph(mapping diagram_data)
   for(int i=0; i<sizeof(diagram_data->data); i++)
     if (sizeof(diagram_data->data[i])%2)
       diagram_data->data[i]
-	= diagram_data->data[i][..sizeof(diagram_data->data[i])-2];
+	= diagram_data->data[i][..<1];
 
   //Fix defaultcolors!
   setinitcolors(diagram_data);
diff --git a/lib/modules/Graphics.pmod/Graph.pmod/create_pie.pike b/lib/modules/Graphics.pmod/Graph.pmod/create_pie.pike
index 3885d8dbcb03f8cf56504d019b1e4c69acd820ec..5705528af0f857d23783e27933fdd82dd7434811 100644
--- a/lib/modules/Graphics.pmod/Graph.pmod/create_pie.pike
+++ b/lib/modules/Graphics.pmod/Graph.pmod/create_pie.pike
@@ -1,5 +1,5 @@
 //! Graph sub-module for drawing pie-charts.
-// $Id: create_pie.pike,v 1.13 2005/11/15 16:08:44 nilsson Exp $
+// $Id: create_pie.pike,v 1.14 2006/11/04 19:06:48 nilsson Exp $
 //
 // These functions were written by Henrik "Hedda" Wallin (hedda@roxen.com)
 // Create_pie can draw pie charts in different forms.
@@ -219,7 +219,7 @@ mapping(string:mixed) create_pie(mapping(string:mixed) diagram_data)
   if (sizeof(diagram_data->datacolors)>
       sizeof(diagram_data->data[0]))
     diagram_data->datacolors=diagram_data->datacolors
-      [0..sizeof(diagram_data->data[0])-1];
+      [..sizeof(diagram_data->data[0])-1];
   
   int t=sizeof(diagram_data->datacolors);
 
diff --git a/lib/modules/Local.pmod b/lib/modules/Local.pmod
index 3eae5bd191e012e8bc4b14be8bc77c05baca17b2..09c521b819a275060846d23a54db3258ca378024 100644
--- a/lib/modules/Local.pmod
+++ b/lib/modules/Local.pmod
@@ -1,6 +1,6 @@
 #pike __REAL_VERSION__
 
-// $Id: Local.pmod,v 1.7 2003/04/27 02:25:33 nilsson Exp $
+// $Id: Local.pmod,v 1.8 2006/11/04 19:06:48 nilsson Exp $
 
 //! @[Local] gives a local module namespace used for locally
 //! installed pike modules. Modules are searched for in
@@ -57,8 +57,8 @@ array(string) _indices() {
   foreach(local_path,string lp)
     tmp+=get_dir(lp);
   return Array.uniq(map(glob("*.pike",tmp)+glob("*.pmod",tmp)+glob("*.so",tmp),
-             lambda(string in){ if(glob("*.so",in)) return in[..sizeof(in)-4];
-             return in[..sizeof(in)-6]; }));
+             lambda(string in){ if(glob("*.so",in)) return in[..<3];
+             return in[..<5]; }));
 }
 
 // _values intentionally not overloaded
diff --git a/lib/modules/Locale.pmod/Charset.pmod/module.pmod b/lib/modules/Locale.pmod/Charset.pmod/module.pmod
index 48f2d87275113ea708b5690bb0fbf4c18e96c0c0..54ac8a7a9eec117827b63b97e7b7fb8b90b1fef9 100644
--- a/lib/modules/Locale.pmod/Charset.pmod/module.pmod
+++ b/lib/modules/Locale.pmod/Charset.pmod/module.pmod
@@ -171,7 +171,7 @@ private class UTF16dec {
     string s = ::drain();
     if(sizeof(s)&1) {
       feed(s[sizeof(s)-1..]);
-      s = s[..sizeof(s)-2];
+      s = s[..<1];
     }
     if(check_bom && sizeof(s))
       switch(s[..1]) {
@@ -206,7 +206,7 @@ private string normalize(string in) {
   }
 
   if( (out=="isoir91" || out=="isoir92") && in[-2]!='9')
-    return sprintf("%s-%c", out[..sizeof(out)-2], out[-1]);
+    return sprintf("%s-%c", out[..<1], out[-1]);
 
   sscanf(out, "cs%s", out);
 
diff --git a/lib/modules/Locale.pmod/Language.pmod/ita.pmod b/lib/modules/Locale.pmod/Language.pmod/ita.pmod
index 2954cbf85a3233e229fbac158c8c3a8ce4ef32ae..85912f867b0a1706aba50d433a6e444816dc0b9b 100644
--- a/lib/modules/Locale.pmod/Language.pmod/ita.pmod
+++ b/lib/modules/Locale.pmod/Language.pmod/ita.pmod
@@ -3,7 +3,7 @@
 
 //! Italian language locale by Francesco Chemolli
 
-// $Id: ita.pmod,v 1.1 2002/10/01 10:57:57 nilsson Exp $
+// $Id: ita.pmod,v 1.2 2006/11/04 19:06:48 nilsson Exp $
 
 inherit "abstract";
 
@@ -66,7 +66,7 @@ string number (int num)
     case 28: case 38: case 48: case 58: case 68: case 78: case 88: case 98:
     case 21: case 31: case 41: case 51: case 61: case 71: case 81: case 91:
       tmp=number(num-(num%10));
-      tmp=tmp[..sizeof(tmp)-2]; //need to cut the last char
+      tmp=tmp[..<1]; //need to cut the last char
       return tmp+number(num%10);
     case 22..27: case 29: case 32..37: case 39: case 42..47: case 49: 
     case 52..57: case 59: case 62..67: case 69: case 72..77: case 79: 
diff --git a/lib/modules/MIME.pmod/module.pmod b/lib/modules/MIME.pmod/module.pmod
index b46fd1a0258c99f1fe2c437dc5228c763d1e3cec..e37e369b861025d6efe3eb752a76d80084b7254b 100644
--- a/lib/modules/MIME.pmod/module.pmod
+++ b/lib/modules/MIME.pmod/module.pmod
@@ -3,7 +3,7 @@
 // RFC1521 functionality for Pike
 //
 // Marcus Comstedt 1996-1999
-// $Id: module.pmod,v 1.13 2006/05/16 21:11:47 adam Exp $
+// $Id: module.pmod,v 1.14 2006/11/04 19:06:48 nilsson Exp $
 
 
 //! RFC1521, the @b{Multipurpose Internet Mail Extensions@} memo, defines a
@@ -457,7 +457,7 @@ string encode_words_text_remapped(string text, string encoding,
 	/* Two encoded words joined by whitespace - not possible */
 	word = lastword+ws+word;
 	ww = reremap(word, charset, replacement, repcb);
-	out = out[..sizeof(out)-2];
+	out = out[..<1];
       }
     lastword = word;
     out += ({ ww });
@@ -1214,10 +1214,10 @@ class Message {
       encoded_data = 0;
       decoded_data = parts[0][1..];
       if(sizeof(decoded_data) && decoded_data[-1]=='\r')
-	decoded_data = decoded_data[..sizeof(decoded_data)-2];
-      body_parts = map(parts[1..sizeof(parts)-2], lambda(string part){
+	decoded_data = decoded_data[..<1];
+      body_parts = map(parts[1..<1], lambda(string part){
 	if(sizeof(part) && part[-1]=='\r')
-	  part = part[..sizeof(part)-2];
+	  part = part[..<1];
 	sscanf(part, "%*[ \t]%s", part);
 	if(has_prefix(part, "\r\n"))
 	  part = part[2..];
diff --git a/lib/modules/Parser.pmod/C.pmod b/lib/modules/Parser.pmod/C.pmod
index 71fdff963c522bf051afc34fff22ff1a3e591103..d5b54a70cc400b1b5bc54ba80ab763fb2a3793e2 100644
--- a/lib/modules/Parser.pmod/C.pmod
+++ b/lib/modules/Parser.pmod/C.pmod
@@ -4,7 +4,7 @@
 //
 // #pike __REAL_VERSION__
 //
-// $Id: C.pmod,v 1.46 2006/10/31 00:14:50 nilsson Exp $
+// $Id: C.pmod,v 1.47 2006/11/04 19:06:48 nilsson Exp $
 
 //! Splits the @[data] string into an array of tokens. An additional
 //! element with a newline will be added to the resulting array of
@@ -35,7 +35,7 @@ array(string) split(string data, void|mapping state)
       pos = search(data, "*/");
       if(pos==-1) {
 	state->in_token = 1;
-	state->remains += data[..sizeof(data)-2];
+	state->remains += data[..<1];
 	return ret;
       }
       ret += ({ state->remains + data[..pos+1] });
@@ -169,7 +169,7 @@ array(string) split(string data, void|mapping state)
 	    pos=search(data,"*/",pos);
 	    if(pos==-1) {
 	      if(state) {
-		state->remains = data[start..sizeof(data)-3];
+		state->remains = data[start..<2];
 		state->in_token = 1;
 		return ret;
 	      }
diff --git a/lib/modules/Parser.pmod/RCS.pike b/lib/modules/Parser.pmod/RCS.pike
index 5a6a00823c527682cbd72a718737f1383b313242..8bf99e0083684178b3eb8468911a8bf2cdb92d59 100644
--- a/lib/modules/Parser.pmod/RCS.pike
+++ b/lib/modules/Parser.pmod/RCS.pike
@@ -1,7 +1,7 @@
 #pike __REAL_VERSION__
 inherit Parser._RCS;
 
-// $Id: RCS.pike,v 1.34 2004/11/08 15:12:21 per Exp $
+// $Id: RCS.pike,v 1.35 2006/11/04 19:06:48 nilsson Exp $
 
 //! A RCS file parser that eats a RCS *,v file and presents nice pike
 //! data structures of its contents.
@@ -148,7 +148,7 @@ loop:
 		  else if(symbol_is_branch(revision))
 		  {
 		      array(string) nums = revision / "."; // "a.b.c.d.0.e"
-		      revision = nums[..sizeof(nums)-3] * "." + "." + nums[-1]; // "a.b.c.d.e"
+		      revision = nums[..<2] * "." + "." + nums[-1]; // "a.b.c.d.e"
 		      branches[revision] = name;
 		  }
 		  else
diff --git a/lib/modules/Parser.pmod/XML.pmod/DOM.pmod b/lib/modules/Parser.pmod/XML.pmod/DOM.pmod
index b2a37d4ec30fdc32ac50d1fb475983b3fa821661..2077df285447afc7c6e8a6c77acd5c7443385c0d 100644
--- a/lib/modules/Parser.pmod/XML.pmod/DOM.pmod
+++ b/lib/modules/Parser.pmod/XML.pmod/DOM.pmod
@@ -17,7 +17,7 @@ class DOMException(int code) {
   constant is_generic_error = 1;
   constant is_dom_exception = 1;
 
-  static array backtrace = predef::backtrace()[..sizeof(predef::backtrace())-3];
+  static array backtrace = predef::backtrace()[..<2];
 
   static constant symbolic = ([
     INDEX_SIZE_ERR: "INDEX_SIZE_ERR",
@@ -984,7 +984,7 @@ class ParseException
 
   constant is_generic_error = 1;
 
-  static array backtrace = predef::backtrace()[..sizeof(predef::backtrace())-3];
+  static array backtrace = predef::backtrace()[..<2];
 
   int get_location() { return loc; }
   string get_public_id() { return pubid; }
@@ -1110,7 +1110,7 @@ class AbstractDOMParser
 	 break;
      case ">":
        current_node = node_stack[-1];
-       node_stack = node_stack[..sizeof(node_stack)-2];
+       node_stack = node_stack[..<1];
        break;
      case "":
        current_node->append_child(document->create_text_node(contents));
diff --git a/lib/modules/Parser.pmod/XML.pmod/Tree.pmod b/lib/modules/Parser.pmod/XML.pmod/Tree.pmod
index b3a53a414344633b4a48dd0a3b76339e2a571f9f..bd72ca7e4cc8907833b48c57f9f513f47b17d40f 100644
--- a/lib/modules/Parser.pmod/XML.pmod/Tree.pmod
+++ b/lib/modules/Parser.pmod/XML.pmod/Tree.pmod
@@ -1,7 +1,7 @@
 #pike __REAL_VERSION__
 
 /*
- * $Id: Tree.pmod,v 1.66 2006/07/21 16:23:05 grubba Exp $
+ * $Id: Tree.pmod,v 1.67 2006/11/04 19:06:49 nilsson Exp $
  *
  */
 
@@ -893,7 +893,7 @@ static class VirtualNode {
       if (has_value(name, ":") && sscanf (name, "%*[^/:]%*c") == 2) {
 	sscanf(reverse(name), "%[^/:]", mTagName);
 	mTagName=reverse(mTagName);
-	mNamespace=name[..sizeof(name)-(1+sizeof(mTagName))];
+	mNamespace=name[..<sizeof(mTagName)];
       }
       else {
 	mTagName = name;
diff --git a/lib/modules/Parser.pmod/XML.pmod/Validating.pike b/lib/modules/Parser.pmod/XML.pmod/Validating.pike
index 1e0f33725a824ae02763ae4358acc546a5efd97a..3ee43e82eb655deb8497bab364fa0fe8cf72e5b5 100644
--- a/lib/modules/Parser.pmod/XML.pmod/Validating.pike
+++ b/lib/modules/Parser.pmod/XML.pmod/Validating.pike
@@ -5,7 +5,7 @@
 //!
 //! cf http://wwww.w3.org/TR/REC-xml/
 //!
-//! $Id: Validating.pike,v 1.12 2006/07/19 12:34:44 grubba Exp $
+//! $Id: Validating.pike,v 1.13 2006/11/04 19:06:49 nilsson Exp $
 //!
 
 #pike __REAL_VERSION__
@@ -380,7 +380,7 @@ static private mixed validate(string kind, string name, mapping attributes,
      }
      if(!__element_stack[-1]->accept_element(0))
        xmlerror("Invalid content for element %s.", name);
-     __element_stack = __element_stack[..sizeof(__element_stack)-2];
+     __element_stack = __element_stack[..<1];
      break;
    case "":
    case "<![CDATA[":
diff --git a/lib/modules/Protocols.pmod/Bittorrent.pmod/Generator.pike b/lib/modules/Protocols.pmod/Bittorrent.pmod/Generator.pike
index a1d718cf7a604fe0a5b08441deefaf5e23ad49ec..61108acfe75d1507f32df6062280487c1b2b0910 100644
--- a/lib/modules/Protocols.pmod/Bittorrent.pmod/Generator.pike
+++ b/lib/modules/Protocols.pmod/Bittorrent.pmod/Generator.pike
@@ -5,7 +5,7 @@
 //!   int main(int ac,array am)
 //!   {
 //!      Generator g=Generator();
-//!      foreach (am[1..sizeof(am)-2];;string f)
+//!      foreach (am[1..<1];;string f)
 //!         g->add(f);
 //!   
 //!      string dest=am[-1];
diff --git a/lib/modules/Protocols.pmod/DNS.pmod b/lib/modules/Protocols.pmod/DNS.pmod
index f192d6f5f23c45247910a83dc37fede18c3a2770..88af77d5ca97dbea2df47582ddbeafa0393d9647 100644
--- a/lib/modules/Protocols.pmod/DNS.pmod
+++ b/lib/modules/Protocols.pmod/DNS.pmod
@@ -1,4 +1,4 @@
-// $Id: DNS.pmod,v 1.87 2005/03/01 17:20:44 nilsson Exp $
+// $Id: DNS.pmod,v 1.88 2006/11/04 19:06:49 nilsson Exp $
 // Not yet finished -- Fredrik Hubinette
 
 //! Domain Name System
@@ -798,7 +798,7 @@ class client
       domains -= ({ "" });
       domains = Array.map(domains, lambda(string d) {
 				     if (d[-1] == '.') {
-				       return d[..sizeof(d)-2];
+				       return d[..<1];
 				     }
 				     return d;
 				   });
diff --git a/lib/modules/Protocols.pmod/HTTP.pmod/Server.pmod/Request.pike b/lib/modules/Protocols.pmod/HTTP.pmod/Server.pmod/Request.pike
index 997d892d40c5e3b831a75077cfef186732c527dc..7b101bf3f11163e5f6364522325d75d6972713d9 100644
--- a/lib/modules/Protocols.pmod/HTTP.pmod/Server.pmod/Request.pike
+++ b/lib/modules/Protocols.pmod/HTTP.pmod/Server.pmod/Request.pike
@@ -221,7 +221,7 @@ static void parse_request()
               if(sscanf(protocol, "HTTP/%d.%d", maj, min)==2)
                 protocol = sprintf("HTTP/%d.%d", maj, min);
             }
-	    full_query=v[1..sizeof(v)-2]*" ";
+	    full_query=v[1..<1]*" ";
 	    break;
 	 }
          // Fallthrough
@@ -363,7 +363,7 @@ static int parse_variables()
   if (l<=sizeof(buf))
   {
     int zap = strlen(buf) - l;
-    raw = raw[..sizeof(raw)-zap];
+    raw = raw[..<zap-1];
     body_raw = buf[..l-1];
     buf = buf[l..];
     return 1;
diff --git a/lib/modules/Protocols.pmod/IMAP.pmod/parse_line.pike b/lib/modules/Protocols.pmod/IMAP.pmod/parse_line.pike
index 252c88d6135ffead7950394b8fabcf6734ecd0ee..0485f454462634a44d09ef308bb07f20bd34f654 100644
--- a/lib/modules/Protocols.pmod/IMAP.pmod/parse_line.pike
+++ b/lib/modules/Protocols.pmod/IMAP.pmod/parse_line.pike
@@ -102,7 +102,7 @@ string|object get_string()
   {
     if (buffer[sizeof(buffer)-1..] != "}")
       return 0;
-    string n = buffer[1..sizeof(buffer)-2];
+    string n = buffer[1..<1];
 
     buffer = "";
     if ( (sizeof(values(n) - values("0123456789")))
@@ -352,7 +352,7 @@ mapping get_atom_options(int max_depth)
 
   res->options = options;
   res->raw = atom +
-    option_start[..sizeof(option_start) - sizeof(buffer) - 1];
+    option_start[..<sizeof(buffer)];
 
       
   if (!sizeof(buffer) || (buffer[0] != '<'))
diff --git a/lib/modules/Protocols.pmod/IRC.pmod/Error.pmod b/lib/modules/Protocols.pmod/IRC.pmod/Error.pmod
index 7e9f8c3fae63b61f0901b3d02dd77deaa8921a0c..6236bca348bfd33c3b51f9921180b95a3e403b33 100644
--- a/lib/modules/Protocols.pmod/IRC.pmod/Error.pmod
+++ b/lib/modules/Protocols.pmod/IRC.pmod/Error.pmod
@@ -15,7 +15,7 @@ class StdErr
       while (!__backtrace[-1][0]||
 	     __backtrace[-1][0][sizeof(__backtrace[-1][0])-11..]
 	     == "/Error.pmod")
-	 __backtrace=__backtrace[0..sizeof(__backtrace)-2];
+	 __backtrace=__backtrace[..<1];
    }
 
    mixed `[](mixed z)
diff --git a/lib/modules/Protocols.pmod/IRC.pmod/Raw.pike b/lib/modules/Protocols.pmod/IRC.pmod/Raw.pike
index 1b4aca41400afba9e17bc53b679c79acf5d806e7..d26daccf97ad178c8a8398346ec9763d12db45d1 100644
--- a/lib/modules/Protocols.pmod/IRC.pmod/Raw.pike
+++ b/lib/modules/Protocols.pmod/IRC.pmod/Raw.pike
@@ -54,7 +54,7 @@ void con_read(mixed dummy,string what)
    buf+=what;
    array lines=(buf-"\r")/"\n";
    buf=lines[-1];
-   foreach (lines[0..sizeof(lines)-2],string row)
+   foreach (lines[..<1],string row)
    {
       mixed err=catch 
       {
diff --git a/lib/modules/Protocols.pmod/LDAP.pmod/client.pike b/lib/modules/Protocols.pmod/LDAP.pmod/client.pike
index a85deddf1dc7e3e6439d69d787680e8dc6a2a1b9..2df7b784816b761cb69ada02ce62c32da2007f39 100644
--- a/lib/modules/Protocols.pmod/LDAP.pmod/client.pike
+++ b/lib/modules/Protocols.pmod/LDAP.pmod/client.pike
@@ -2,7 +2,7 @@
 
 // LDAP client protocol implementation for Pike.
 //
-// $Id: client.pike,v 1.101 2006/06/22 15:39:23 mast Exp $
+// $Id: client.pike,v 1.102 2006/11/04 19:06:49 nilsson Exp $
 //
 // Honza Petrous, hop@unibase.cz
 //
@@ -598,7 +598,7 @@ static function(string:string) get_attr_encoder (string attr)
   void create(string|mapping(string:mixed)|void url, object|void context)
   {
 
-    info = ([ "code_revision" : ("$Revision: 1.101 $"/" ")[1] ]);
+    info = ([ "code_revision" : ("$Revision: 1.102 $"/" ")[1] ]);
 
     if(!url || !sizeof(url))
       url = LDAP_DEFAULT_URL;
@@ -1491,7 +1491,7 @@ object get_default_filter()
 	    }
 	    if (cookie) {
 	      // Remove the extra end marker.
-	      rawarr = rawarr[..sizeof(rawarr)-2];
+	      rawarr = rawarr[..<1];
 	    }
 	  }
 	    
diff --git a/lib/modules/Protocols.pmod/LDAP.pmod/module.pmod b/lib/modules/Protocols.pmod/LDAP.pmod/module.pmod
index 8efc8e6b0da7f017ce626cc290e13abec30e5d28..462105bb0bbe78cabf8787dab5e0b0e488a342b2 100644
--- a/lib/modules/Protocols.pmod/LDAP.pmod/module.pmod
+++ b/lib/modules/Protocols.pmod/LDAP.pmod/module.pmod
@@ -1,6 +1,6 @@
 #pike __REAL_VERSION__
 
-// $Id: module.pmod,v 1.24 2005/07/22 20:32:19 nilsson Exp $
+// $Id: module.pmod,v 1.25 2006/11/04 19:06:49 nilsson Exp $
 
 #include "ldap_globals.h"
 
@@ -247,7 +247,7 @@ string encode_dn_value (string str)
 		 ({",",   "+",   "\"",   "\\",   "<",   ">",   ";"}),
 		 ({"\\,", "\\+", "\\\"", "\\\\", "\\<", "\\>", "\\;"}));
   if (has_suffix (str, " "))
-    str = str[..sizeof (str) - 2] + "\\ ";
+    str = str[..<1] + "\\ ";
   if (has_prefix (str, " ") || has_prefix (str, "#"))
     str = "\\" + str;
   return str;
@@ -1336,7 +1336,7 @@ class FilterError
     if (sizeof (args)) msg = sprintf (msg, @args);
     error_message = msg;
     error_backtrace = backtrace();
-    error_backtrace = error_backtrace[..sizeof (error_backtrace) - 2];
+    error_backtrace = error_backtrace[..<1];
     throw (this_object());
   }
 }
@@ -1530,7 +1530,7 @@ object make_filter (string filter, void|int ldap_version)
 
 	    array(object) subs = sizeof (parts[0]) ?
 	      ({ASN1_CONTEXT_OCTET_STRING (0, parts[0])}) : ({});
-	    foreach (parts[1..sizeof (parts) - 2], string middle)
+	    foreach (parts[1..<1], string middle)
 	      subs += ({ASN1_CONTEXT_OCTET_STRING (1, middle)});
 	    if (sizeof (parts) > 1 && sizeof (parts[-1]))
 	      subs += ({ASN1_CONTEXT_OCTET_STRING (2, parts[-1])});
diff --git a/lib/modules/Protocols.pmod/LysKOM.pmod/Helper.pmod b/lib/modules/Protocols.pmod/LysKOM.pmod/Helper.pmod
index 385a0e556e6cdbfafdf010690ca803a634e1428f..32b211dc46d9b90f9cf463c03a2a7a910def34a7 100644
--- a/lib/modules/Protocols.pmod/LysKOM.pmod/Helper.pmod
+++ b/lib/modules/Protocols.pmod/LysKOM.pmod/Helper.pmod
@@ -42,7 +42,7 @@ class LysKOMError
       desc=_desc;
       status=_status;
       __backtrace=backtrace();
-      __backtrace=__backtrace[..sizeof(__backtrace)-3];
+      __backtrace=__backtrace[..<2];
    }
 
    LysKOMError clone(int status)
diff --git a/lib/modules/Protocols.pmod/OBEX.pmod b/lib/modules/Protocols.pmod/OBEX.pmod
index a48af123f42c41a943d307a948363112c41c724c..7f7516094f0eb511aab8b4f346082c31f83f8a31 100644
--- a/lib/modules/Protocols.pmod/OBEX.pmod
+++ b/lib/modules/Protocols.pmod/OBEX.pmod
@@ -113,7 +113,7 @@ Headers decode_headers(string h)
       } else h=v="";
       if(hi < 0x40) {
 	if(has_suffix(v, "\0\0"))
-	  v = v[..sizeof(v)-3];
+	  v = v[..<2];
 	v = d->clear()->feed(v)->drain();
       }
       break;
@@ -280,7 +280,7 @@ class Client
       array(string) hh_split = split_headers(hh, max_pkt_length-3-
 					     sizeof(extra_req));
       hh = hh_split[-1];
-      foreach(hh_split[..sizeof(hh_split)-2], string h0) {
+      foreach(hh_split[..<1], string h0) {
 	[int rc0, string rdata0] = low_do_request(r&~REQ_FINAL, extra_req+h0);
 	if(rc0 != 100)
 	  return ({ rc0, (rc0==501? ([]): decode_headers(rdata0)) });
diff --git a/lib/modules/Protocols.pmod/TELNET.pmod b/lib/modules/Protocols.pmod/TELNET.pmod
index 47c54af724dab33c0f48ccd7234e75156a085b6e..7f028d6d29f35118ffbb858f415c489a7c344993 100644
--- a/lib/modules/Protocols.pmod/TELNET.pmod
+++ b/lib/modules/Protocols.pmod/TELNET.pmod
@@ -1,5 +1,5 @@
 //
-// $Id: TELNET.pmod,v 1.25 2004/04/25 14:17:54 agehall Exp $
+// $Id: TELNET.pmod,v 1.26 2006/11/04 19:06:49 nilsson Exp $
 //
 // The TELNET protocol as described by RFC 764 and others.
 //
@@ -618,7 +618,7 @@ class protocol
 	    case EC:	// Erase Character
 	      for (j=i; j--;) {
 		if (sizeof(a[j])) {
-		  a[j] = a[j][..sizeof(a[j])-2];
+		  a[j] = a[j][..<1];
 		  break;
 		}
 	      }
diff --git a/lib/modules/Remote.pmod/module.pmod b/lib/modules/Remote.pmod/module.pmod
index 043a81e62f4696e0b86e4c104b84adc298540649..b6dd110c9b0e9abf72ad9c1430e8214d03b0ce6f 100644
--- a/lib/modules/Remote.pmod/module.pmod
+++ b/lib/modules/Remote.pmod/module.pmod
@@ -765,7 +765,7 @@ class Context {
 
   array encode_error(string e)
   {
-    if (e[-1] == '\n') e = e[..sizeof(e)-2];
+    if (e[-1] == '\n') e = e[..<1];
     return ({ CTX_ERROR, gethostname()+":"+replace(e, "\n", "\n"+gethostname()+":") });
   }
 
diff --git a/lib/modules/SSL.pmod/state.pike b/lib/modules/SSL.pmod/state.pike
index 92e41219000b7514481ab4c560f9e6510772aede..00d99a0389a577628bf78ef0382a890d5c81f269 100644
--- a/lib/modules/SSL.pmod/state.pike
+++ b/lib/modules/SSL.pmod/state.pike
@@ -1,7 +1,7 @@
 #pike __REAL_VERSION__
 // #pragma strict_types
 
-// $Id: state.pike,v 1.28 2004/07/05 17:01:24 grubba Exp $
+// $Id: state.pike,v 1.29 2006/11/04 19:06:49 nilsson Exp $
 
 //! A connection switches from one set of state objects to another, one or
 //! more times during its lifetime. Each state object handles a one-way
@@ -56,7 +56,7 @@ string tls_unpad(string data) {
     }
 #endif
 
-  return data[..sizeof(data)-plen-2];
+  return data[..<plen+1];
 }
 
 //! Destructively decrypts a packet (including inflating and MAC-verification,
diff --git a/lib/modules/Sql.pmod/Sql.pike b/lib/modules/Sql.pmod/Sql.pike
index 88d77debc8709282ae38305b387378dcf73135a1..7e25a91b69b28420e42439c84864ac3b7c4a8a5f 100644
--- a/lib/modules/Sql.pmod/Sql.pike
+++ b/lib/modules/Sql.pmod/Sql.pike
@@ -1,5 +1,5 @@
 /*
- * $Id: Sql.pike,v 1.87 2006/09/15 12:21:53 mast Exp $
+ * $Id: Sql.pike,v 1.88 2006/11/04 19:06:49 nilsson Exp $
  *
  * Implements the generic parts of the SQL-interface
  *
@@ -221,7 +221,7 @@ void create(string|object host, void|string|mapping(string:int|string) db,
       if (sizeof(arr) > 1) {
 	// User and/or password specified
 	host = arr[-1];
-	arr = (arr[0..sizeof(arr)-2]*"@")/":";
+	arr = (arr[..<1]*"@")/":";
 	if (!user && sizeof(arr[0])) {
 	  user = arr[0];
 	}
@@ -234,7 +234,7 @@ void create(string|object host, void|string|mapping(string:int|string) db,
       }
       arr = host/"/";
       if (sizeof(arr) > 1) {
-	host = arr[..sizeof(arr)-2]*"/";
+	host = arr[..<1]*"/";
 	if (!db) {
 	  db = arr[-1];
 	}
diff --git a/lib/modules/Sql.pmod/mysql.pike b/lib/modules/Sql.pmod/mysql.pike
index 7519111e9f5396f5f367f70f985ecba0ed58035b..eef7c16c8b2a705581b74dbc8dbe74f1161d0469 100644
--- a/lib/modules/Sql.pmod/mysql.pike
+++ b/lib/modules/Sql.pmod/mysql.pike
@@ -1,5 +1,5 @@
 /*
- * $Id: mysql.pike,v 1.32 2006/09/15 14:28:03 mast Exp $
+ * $Id: mysql.pike,v 1.33 2006/11/04 19:06:49 nilsson Exp $
  *
  * Glue for the Mysql-module
  */
@@ -431,7 +431,7 @@ string utf8_encode_query (string q, function(string:string) encode_fn)
 	  sscanf (encoding[1..], "%[a-zA-Z0-9]", encoding);
 	else
 	  encoding = "utf8";	// Gotta be "N".
-	s = s[1..sizeof (s) - 2];
+	s = s[1..<1];
 	if (sizeof (s) > 40) s = sprintf ("%O...", s[..37]);
 	else s = sprintf ("%O", s);
 	predef::error ("A string in the query should be %s encoded "
diff --git a/lib/modules/Sql.pmod/rsql.pike b/lib/modules/Sql.pmod/rsql.pike
index c55570f221f9f8dee238fe0041f362317d17be95..90b7f172699f7cb8f9f8c4cac02355d5d88210da 100644
--- a/lib/modules/Sql.pmod/rsql.pike
+++ b/lib/modules/Sql.pmod/rsql.pike
@@ -251,7 +251,7 @@ void create(string|void host, string|void db, string|void user, string|void pw)
 
   arr = host/"@";
   if(sizeof(arr)>1) {
-    user = arr[..sizeof(arr)-2]*"@";
+    user = arr[..<1]*"@";
     host = arr[-1];
     arr = user/":";
     if(sizeof(arr)>1) {
diff --git a/lib/modules/Sql.pmod/tds.pike b/lib/modules/Sql.pmod/tds.pike
index f149698826f7fb8187d7150af2b8d03d5c709017..dd847d7da6f2140a24f72fa129e141707573841c 100644
--- a/lib/modules/Sql.pmod/tds.pike
+++ b/lib/modules/Sql.pmod/tds.pike
@@ -1,5 +1,5 @@
 /*
- * $Id: tds.pike,v 1.20 2006/04/05 17:21:33 grubba Exp $
+ * $Id: tds.pike,v 1.21 2006/11/04 19:06:49 nilsson Exp $
  *
  * A Pike implementation of the TDS protocol.
  *
@@ -1172,7 +1172,7 @@ static {
 	  } else if (sizeof(res) == scale) {
 	    res = "0." + res;
 	  } else if (scale) {
-	    res = res[..sizeof(res)-(scale+1)] + "." +
+	    res = res[..<scale] + "." +
 	      res[sizeof(res)-scale..];
 	  }
 
@@ -1679,7 +1679,7 @@ static void create(string|void server, string|void database,
     array(string) tmp = server/":";
     if (sizeof(tmp) > 1) {
       port = (int)tmp[-1];
-      server = tmp[..sizeof(tmp)-2]*":";
+      server = tmp[..<1]*":";
     }
   } else {
     server = "127.0.0.1";
diff --git a/lib/modules/Standards.pmod/ASN1.pmod/Types.pmod b/lib/modules/Standards.pmod/ASN1.pmod/Types.pmod
index fe7708313513b2b71bc1a159f3c06e0156bb263a..baf01c57928da91f371e6d62dfdb0330c416b2ff 100644
--- a/lib/modules/Standards.pmod/ASN1.pmod/Types.pmod
+++ b/lib/modules/Standards.pmod/ASN1.pmod/Types.pmod
@@ -1,5 +1,5 @@
 //
-// $Id: Types.pmod,v 1.37 2005/01/21 17:22:45 mast Exp $
+// $Id: Types.pmod,v 1.38 2006/11/04 19:06:49 nilsson Exp $
 //
 
 //! Encodes various asn.1 objects according to the Distinguished
@@ -389,7 +389,7 @@ class BitString
     {
       value = value[..(len + 7)/8];
       unused = (- len) % 8;
-      value = sprintf("%s%c", value[..sizeof(value)-2], value[-1]
+      value = sprintf("%s%c", value[..<1], value[-1]
 		      & ({ 0xff, 0xfe, 0xfc, 0xf8,
 			   0xf0, 0xe0, 0xc0, 0x80 })[unused]);
     } else {
diff --git a/lib/modules/Standards.pmod/ID3.pmod b/lib/modules/Standards.pmod/ID3.pmod
index 39454c364768dc14bbae46ab867b52a3f64e5de5..4251bfdf56fed4ff54b64a44120de73e16d01edb 100644
--- a/lib/modules/Standards.pmod/ID3.pmod
+++ b/lib/modules/Standards.pmod/ID3.pmod
@@ -1,6 +1,6 @@
 // ID3.pmod
 //
-//  $Id: ID3.pmod,v 1.20 2004/04/06 21:44:57 nilsson Exp $
+//  $Id: ID3.pmod,v 1.21 2006/11/04 19:06:49 nilsson Exp $
 //
 
 #pike __REAL_VERSION__
@@ -775,7 +775,7 @@ class Frame_TMED {
     // Some client adds paranthesis here...
     foreach(texts; int pos; string t)
       if(sizeof(t) && t[0]=='(' && t[-1]==')')
-	texts[pos] = t[1..sizeof(t)-2];
+	texts[pos] = t[1..<1];
   }
 }
 
diff --git a/lib/modules/Standards.pmod/IDNA.pmod b/lib/modules/Standards.pmod/IDNA.pmod
index 82141e739431931765d03d4d5e1264c1f1855c89..9e93cf1094ba568b9ebd33936efc72ec69f28f32 100644
--- a/lib/modules/Standards.pmod/IDNA.pmod
+++ b/lib/modules/Standards.pmod/IDNA.pmod
@@ -434,7 +434,7 @@ string zone_to_ascii(string s, int(0..1)|void allow_unassigned,
 {
   if(has_suffix(s, ".") && !has_suffix(s, ".."))
     return sizeof(s)>1?
-      zone_to_ascii(s[..sizeof(s)-2], allow_unassigned,
+      zone_to_ascii(s[..<1], allow_unassigned,
 		    use_std3_ascii_rules)+"."
       : s;
   else
diff --git a/lib/modules/Standards.pmod/URI.pike b/lib/modules/Standards.pmod/URI.pike
index b7095c46066cf969e4d4ecf92a4d5bce79459841..109ecebd2175c5c99e4a642b00cba5b1762a1d1c 100644
--- a/lib/modules/Standards.pmod/URI.pike
+++ b/lib/modules/Standards.pmod/URI.pike
@@ -4,7 +4,7 @@
 //! absolute form, as defined in RFC 2396 and RFC 3986.
 
 // Implemented by Johan Sundstr�m and Johan Sch�n.
-// $Id: URI.pike,v 1.24 2006/07/13 15:35:46 nilsson Exp $
+// $Id: URI.pike,v 1.25 2006/11/04 19:06:49 nilsson Exp $
 
 #pragma strict_types
 
@@ -102,7 +102,7 @@ string combine_uri_path(string base, string rel)
   //    last (right-most) slash character, if any, are excluded.
   array segments=base/"/";
   if(has_value(base, "/"))
-    buf=segments[..sizeof(segments)-2]*"/"+"/";
+    buf=segments[..<1]*"/"+"/";
   else
     buf=base;
 
@@ -121,7 +121,7 @@ string combine_uri_path(string base, string rel)
   // d) If the buffer string ends with "." as a complete path segment,
   //    that "." is removed.
   if(segments[-1]==".")
-    segments=segments[..sizeof(segments)-2]+({""});
+    segments=segments[..<1]+({""});
 
   // e) All occurrences of "<segment>/../", where <segment> is a
   //    complete path segment not equal to "..", are removed from the
@@ -151,7 +151,7 @@ string combine_uri_path(string base, string rel)
   //    "<segment>/.." is removed.
   if(sizeof(segments)>=2)
     if(segments[-2]!=".." && segments[-1]=="..")
-      segments=segments[..sizeof(segments)-3]+({""});
+      segments=segments[..<2]+({""});
 
   // g) If the resulting buffer string still begins with one or more
   //    complete path segments of "..", then the reference is
diff --git a/lib/modules/Standards.pmod/XML.pmod/Wix.pmod b/lib/modules/Standards.pmod/XML.pmod/Wix.pmod
index 68b06a14f7a167ecf59e294a64210e2cb93f6707..ca8a5b1dca9d2d61cb9c7290f465e092670cacd7 100644
--- a/lib/modules/Standards.pmod/XML.pmod/Wix.pmod
+++ b/lib/modules/Standards.pmod/XML.pmod/Wix.pmod
@@ -1,6 +1,6 @@
 #pike __REAL_VERSION__
 
-// $Id: Wix.pmod,v 1.24 2006/08/03 19:33:12 mast Exp $
+// $Id: Wix.pmod,v 1.25 2006/11/04 19:06:49 nilsson Exp $
 //
 // 2004-11-01 Henrik Grubbstr�m
 
@@ -155,7 +155,7 @@ class Directory
     if (sizeof(segs) > 1) {
       extension = segs[-1];
       if (sizeof(segs) > 2) {
-	base = segs[..sizeof(segs)-2] * "_";
+	base = segs[..<1] * "_";
 	truncated = 1;
       } else {
 	base = segs[0];
@@ -361,7 +361,7 @@ class Directory
   void install_file(string dest, string src, string|void id)
   {
     array(string) path = dest/"/";
-    Directory d = low_add_path(path[..sizeof(path)-2]);
+    Directory d = low_add_path(path[..<1]);
     d->low_install_file(path[-1], src, id);
   }
 
@@ -385,7 +385,7 @@ class Directory
   void uninstall_file(string pattern)
   {
     array(string) path = pattern/"/";
-    Directory d = low_add_path(path[..sizeof(path)-2]);
+    Directory d = low_add_path(path[..<1]);
     d->low_uninstall_file(path[-1]);
   }
 
diff --git a/lib/modules/Stdio.pmod/Readline.pike b/lib/modules/Stdio.pmod/Readline.pike
index 857407a0097a36194e1742ede685c6ad2fa19b56..b06d716c942de21c4a04c8426814af12f6ae0300 100644
--- a/lib/modules/Stdio.pmod/Readline.pike
+++ b/lib/modules/Stdio.pmod/Readline.pike
@@ -1,4 +1,4 @@
-// $Id: Readline.pike,v 1.58 2004/11/02 20:43:46 mast Exp $
+// $Id: Readline.pike,v 1.59 2006/11/04 19:06:50 nilsson Exp $
 #pike __REAL_VERSION__
 
 //!
@@ -1205,7 +1205,7 @@ class History
     historykeep = ([]);
     historylist[-1] = text;
     if(sizeof(historylist)>1 && historylist[-2]==historylist[-1])
-      historylist = historylist[..sizeof(historylist)-2];
+      historylist = historylist[..<1];
   }
 
   //!
@@ -1550,7 +1550,7 @@ void write(string msg,void|int word_wrap)
     output_controller->clear(1);
   }
   array(string) tmp=msg/"\n";
-  foreach(tmp[..sizeof(tmp)-2],string l)
+  foreach(tmp[..<1],string l)
   {
     output_controller->write(l,word_wrap);
     output_controller->newline();
diff --git a/lib/modules/Stdio.pmod/module.pmod b/lib/modules/Stdio.pmod/module.pmod
index c34a99275f797e0482c0bdab66bf076cf2ce7aad..ba148e9b75795d8db976b8b6ba8fd1e1bd57f8b8 100644
--- a/lib/modules/Stdio.pmod/module.pmod
+++ b/lib/modules/Stdio.pmod/module.pmod
@@ -1,4 +1,4 @@
-// $Id: module.pmod,v 1.224 2006/07/23 20:18:16 mast Exp $
+// $Id: module.pmod,v 1.225 2006/11/04 19:06:50 nilsson Exp $
 #pike __REAL_VERSION__
 
 inherit files;
@@ -1608,7 +1608,7 @@ class FILE
     if (!n) 
     {
        res=read()/"\n";
-       if (res[-1]=="") return res[..sizeof(res)-2];
+       if (res[-1]=="") return res[..<1];
        return res;
     }
     if (n < 0) return ({});
@@ -1620,7 +1620,7 @@ class FILE
 	bpos += `+(@sizeof(delta[*]), sizeof(delta));
 	return res + delta;
       }
-      delta = cached_lines[lp..sizeof(cached_lines)-2];
+      delta = cached_lines[lp..<1];
       bpos += `+(@sizeof(delta[*]), sizeof(delta));
       res += delta;
       // NB: lp and cached_lines are reset by get_lines().
@@ -1866,7 +1866,7 @@ static void register_open_file (string file, int id, array backtrace)
     // Avoid the recursion which might occur when the backtrace is formatted.
     registering_files[file] = 1;
     open_files[id] =
-      ({file, describe_backtrace (backtrace[..sizeof (backtrace) - 2])});
+      ({file, describe_backtrace (backtrace[..<1])});
     m_delete (registering_files, file);
   }
   else
@@ -1905,7 +1905,7 @@ void report_file_open_places (string file)
 	    map (places,
 		 lambda (string place) {
 		   return " * " +
-		     replace (place[..sizeof (place) - 2], "\n", "\n   ");
+		     replace (place[..<1], "\n", "\n   ");
 		 }) * "\n\n" + "\n");
   else
     werror ("File " + file + " is currently not opened from any known place.\n");
diff --git a/lib/modules/String.pmod/module.pmod b/lib/modules/String.pmod/module.pmod
index 5715c40544ce18f55b6fbb2394f8cb4308eb5472..ea749497be77558b882352d42c2abd7ff3746627 100644
--- a/lib/modules/String.pmod/module.pmod
+++ b/lib/modules/String.pmod/module.pmod
@@ -34,7 +34,7 @@ string implode_nicely(array(string|int|float) foo, string|void separator)
   {
   case 0: return "";
   case 1: return ([array(string)]foo)[0];
-  default: return foo[0..sizeof(foo)-2]*", "+" "+separator+" "+foo[-1];
+  default: return foo[..<1]*", "+" "+separator+" "+foo[-1];
   }
 }
 
@@ -46,7 +46,7 @@ string implode_nicely(array(string|int|float) foo, string|void separator)
 //!
 string capitalize(string str)
 {
-  return upper_case(str[0..0])+str[1..sizeof(str)];
+  return upper_case(str[0..0])+str[1..];
 }
 
 //! Convert the first character in each word (separated by spaces) in
diff --git a/lib/modules/Tools.pmod/AutoDoc.pmod/MirarDocParser.pike b/lib/modules/Tools.pmod/AutoDoc.pmod/MirarDocParser.pike
index bc1d40b295a3adc19aca3351b71c082c58af2193..602a7fbacdae084e79c4b992cbcb2104d695fe51 100644
--- a/lib/modules/Tools.pmod/AutoDoc.pmod/MirarDocParser.pike
+++ b/lib/modules/Tools.pmod/AutoDoc.pmod/MirarDocParser.pike
@@ -1,4 +1,4 @@
-/* $Id: MirarDocParser.pike,v 1.25 2003/11/07 05:39:39 nilsson Exp $ */
+/* $Id: MirarDocParser.pike,v 1.26 2006/11/04 19:06:50 nilsson Exp $ */
 
 #pike __REAL_VERSION__
 
@@ -216,13 +216,13 @@ string htmlify(string s)
 string make_nice_reference(string what,string prefix,string stuff)
 {
    string q;
-   if (what==prefix[sizeof(prefix)-sizeof(what)-2..sizeof(prefix)-3])
+   if (what==prefix[sizeof(prefix)-sizeof(what)-2..<2])
    {
-      q=prefix[0..sizeof(prefix)-3];
+      q=prefix[..<2];
    }
-   else if (what==prefix[sizeof(prefix)-sizeof(what)-1..sizeof(prefix)-2])
+   else if (what==prefix[sizeof(prefix)-sizeof(what)-1..<1])
    {
-      q=prefix[0..sizeof(prefix)-2];
+      q=prefix[..<1];
    }
    else if (search(what,".")==-1 &&
 	    search(what,"->")==-1 &&
@@ -300,7 +300,7 @@ string doctype(string type,void|string indent)
    string combine_or(string a,string b)
    {
      b = String.trim_all_whites(b);
-     if (b[..3]=="<or>") b=b[4..sizeof(b)-6];
+     if (b[..3]=="<or>") b=b[4..<5];
      return "<or>"+a+b+"</or>";
    };
    array(string) paramlist(string in,string indent)
@@ -382,7 +382,7 @@ string doctype(string type,void|string indent)
 	 return
 	    nindent+
 	    "<function>"+
-	    map(z[..sizeof(z)-2],
+	    map(z[..<1],
 		lambda(string s)
 		{
 		   return nindent+"  <argtype>"+s+"</argtype>";
@@ -448,24 +448,24 @@ void docdecl(string enttype,
 	   if(in[i]=='(') br++;
 	   if(in[i]==')') br--;
 	   if(in[i]==' ' && !br) {
-	     t = doctype(t[..sizeof(t)-2]);
+	     t = doctype(t[..<1]);
 	     break;
 	   }
 	   if(br==-1 || (in[i]==',' && !br)) {
 	     if(String.trim_all_whites(t)==")")
 	       return res;
-	     if(String.trim_all_whites(t[..sizeof(t)-2])=="void" && res=="")
+	     if(String.trim_all_whites(t[..<1])=="void" && res=="")
 		return "<argument/>\n";
 
 	     if(t[-1]==')')
-	       return res += "<argument><value>" + t[..sizeof(t)-2] + "</value></argument>";
+	       return res += "<argument><value>" + t[..<1] + "</value></argument>";
 	     if(t[-1]==',')
 	       break;
 	   }
 	 }
 
 	 if(t[-1]==',') {
-	   res += "<argument><value>" + t[..sizeof(t)-2] + "</value></argument>";
+	   res += "<argument><value>" + t[..<1] + "</value></argument>";
 	   i++;
 	   continue;
 	 }
@@ -793,7 +793,7 @@ string make_doc_files(string builddir, string imgdest, string|void namespace)
 
    namespace = namespace || "predef::";
    if (has_suffix(namespace, "::")) {
-      namespace = namespace[..sizeof(namespace)-3];
+      namespace = namespace[..<2];
    }
 
    object f = class {
@@ -1119,7 +1119,7 @@ void create(string IMAGE_DIR, int|void quiet)
   string end_tag() {
     if(!sizeof(tag_stack)) throw( ({ \"Tag stack underflow.\\n\", backtrace() }) );
     string name = tag_stack[-1];
-    tag_stack = tag_stack[..sizeof(tag_stack)-2];
+    tag_stack = tag_stack[..<1];
     return \"</\" + name + \">\";
   }
 
diff --git a/lib/modules/Tools.pmod/AutoDoc.pmod/ProcessXML.pmod b/lib/modules/Tools.pmod/AutoDoc.pmod/ProcessXML.pmod
index a24327fad72929630b772c54cab833fed0fc09f5..b0995b4fc5acf771622b0c5370a398fc3a656b46 100644
--- a/lib/modules/Tools.pmod/AutoDoc.pmod/ProcessXML.pmod
+++ b/lib/modules/Tools.pmod/AutoDoc.pmod/ProcessXML.pmod
@@ -120,7 +120,7 @@ static object makeWrapper(array(string) modules, object|void child)
       string namespace = "predef";	// Default namespace.
       if (sizeof(modules) && has_suffix(modules[0], "::")) {
 	// The parent module list starts with a namespace.
-	namespace = modules[0][..sizeof(modules[0])-3];
+	namespace = modules[0][..<2];
 	modules = modules[1..];
       }
       foreach(reverse(modules), string n) {
@@ -190,7 +190,7 @@ string extractXML(string filename, int|void pikeMode, string|void type,
   if (styleC && has_value(contents, "/*!")) {
     string namespace = ((parentModules||({})) + ({"predef::"}))[0];
     if (has_suffix(namespace, "::")) {
-      namespace = namespace[..sizeof(namespace)-3];
+      namespace = namespace[..<2];
     }
     object m = .CExtractor.extract(contents, filename, namespace);
     return m->xml();
@@ -504,7 +504,7 @@ static void recurseAppears(string namespace,
       a = ({ namespace }) + a;
     }
     // Strip the :: from the namespace name.
-    a[0] = a[0][..sizeof(a[0])-3];
+    a[0] = a[0][..<2];
     t->belongsRef = a;
     tasks += ({ t });
   }
@@ -584,7 +584,7 @@ static array(string) splitRef(string ref) {
   if ((sizeof(ref)>1) && (ref[0] == '"')) {
     // Explictly named program.
     // Try to DWIM it...
-    ref = ref[1..sizeof(ref)-2];
+    ref = ref[1..<1];
     ref = replace(ref, ({ ".pike", ".pmod" }), ({ "", "" }));
     // FIXME: What about module.pike/module.pmod?
     return ref/"/";
@@ -695,9 +695,9 @@ static class ScopeStack {
 	// Leaving namespace...
 	scopes[namespace] = namespaceStack[-1][1];
 	namespace = namespaceStack[-1][0];
-	namespaceStack = namespaceStack[..sizeof(namespaceStack)-2];
+	namespaceStack = namespaceStack[..<1];
       } else {
-	scopes[namespace] = scopes[namespace][..sizeof(scopes[namespace])-2];
+	scopes[namespace] = scopes[namespace][..<1];
       }
     }
   }
@@ -1168,7 +1168,7 @@ class NScopeStack
     }
     if (sizeof(stack)) {
       top = stack[-1];
-      stack = stack[..sizeof(stack)-2];
+      stack = stack[..<1];
     } else {
       top = 0;
     }