<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://pickwiki.org/index.php?action=history&amp;feed=atom&amp;title=EM</id>
	<title>EM - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://pickwiki.org/index.php?action=history&amp;feed=atom&amp;title=EM"/>
	<link rel="alternate" type="text/html" href="https://pickwiki.org/index.php?title=EM&amp;action=history"/>
	<updated>2026-04-28T22:13:48Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.0</generator>
	<entry>
		<id>https://pickwiki.org/index.php?title=EM&amp;diff=1742&amp;oldid=prev</id>
		<title>Conversion script: link fix</title>
		<link rel="alternate" type="text/html" href="https://pickwiki.org/index.php?title=EM&amp;diff=1742&amp;oldid=prev"/>
		<updated>2015-02-26T23:48:54Z</updated>

		<summary type="html">&lt;p&gt;link fix&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;EM is designed to be used with Emacs, especially under Unix X(-windows) in client-server mode.  It enables editing of individual MVdatabase records or a selectlist of records one by one, or a selectlist of records all at once (be careful about the number as records are locked and you can easily fill the lock table).  One record can be edited by entering at TCL: &amp;quot;EM &amp;lt;filename&amp;gt; &amp;lt;recordname&amp;gt;&amp;quot;, and this will pop the record into a running emacs session buffer.  If a select list is active, entertering at TCL: &amp;quot;EM &amp;lt;filename&amp;gt;&amp;quot; will pop the records, one at a time, into a running emacs session buffer.  If a select list is active and you want to edit all the records at once, enter at TCL: &amp;quot;EM &amp;lt;filename&amp;gt; *&amp;quot; to get all in one buffer of a running emacs session.  In this mode in emacs, the current record (line) can be viewed in formatted form in a window below by entering the appropriate emacs command (see the Emacs Lisp library Wike page for the code).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;PRE&amp;gt;&lt;br /&gt;
* -*-mode:unibasic-*-&lt;br /&gt;
*$Id: EM,v 1.3 2003/12/15 05:30:26 kenf Exp kenf $&lt;br /&gt;
*     Last updated by klf (klf) at 13:35:20 on 08/02/93&lt;br /&gt;
*     Modified by Ken Ford for use by TSW - 4th June, 2003.&lt;br /&gt;
******************************************************************************&lt;br /&gt;
* This  program takes  the command  line  arguments entered when  executed and&lt;br /&gt;
* converts the Universe file and item name to be edited into a  Unix pathname.&lt;br /&gt;
* If the file is not a hashed file, the item is first copied to the &amp;amp;UFD&amp;amp; file&lt;br /&gt;
* with &amp;#039;~&amp;#039; appended.  This file is then used by the EMACS  editor and deleted,&lt;br /&gt;
* after it has been copied back to the original item.  Otherwise,  the item is&lt;br /&gt;
* edited directly using  its  Unix  pathname.  The  program will  work  with a&lt;br /&gt;
* single item name, a list of item names, &amp;#039;*&amp;#039;, or an active select list.&lt;br /&gt;
* If the item name is &amp;#039;*&amp;#039;, with or without a select list, the items concerned&lt;br /&gt;
* will be formatted into a buffer in virtually raw format, with the items id.&lt;br /&gt;
* prepended.  Items can be edited, deleted or inserted provided they have their&lt;br /&gt;
* item ids. intact and relevant item, field, value and sub value marks.      &lt;br /&gt;
*&lt;br /&gt;
*                  Author:  Ken Ford              Date: 4th March, 1992.&lt;br /&gt;
*                  &lt;br /&gt;
*     Update History:&lt;br /&gt;
*     Modified to use client/server Emacs.        Ken Ford     27th June, 2003&lt;br /&gt;
*     Modified TO enable editting of multiple     Ken Ford     26th August, 2003&lt;br /&gt;
*         items IN a buffer.      &lt;br /&gt;
*              &lt;br /&gt;
******************************************************************************&lt;br /&gt;
$OPTIONS DEFAULT&lt;br /&gt;
      if index(@SENTENCE,&amp;#039;-DEBUG&amp;#039;,1) THEN&lt;br /&gt;
         sentence = FIELD(@SENTENCE, &amp;#039;-&amp;#039;, 1)&lt;br /&gt;
         DEBUG&lt;br /&gt;
      END&lt;br /&gt;
      ELSE&lt;br /&gt;
         sentence = @sentence&lt;br /&gt;
      END&lt;br /&gt;
      prompt &amp;#039;&amp;#039;  &lt;br /&gt;
      execute &amp;#039;sh -c pwd&amp;#039; capturing output&lt;br /&gt;
      current.account.pathname=output&amp;lt;1&amp;gt;&lt;br /&gt;
      unix.pathname=&amp;#039;&amp;#039;&lt;br /&gt;
      option=field(field(sentence,&amp;#039;-&amp;#039;,2),&amp;#039; &amp;#039;,1)&lt;br /&gt;
      filename=field(sentence,&amp;#039; &amp;#039;,2)&lt;br /&gt;
      if filename[1,1]=&amp;#039;-&amp;#039; or filename=&amp;#039;&amp;#039; then&lt;br /&gt;
         print &amp;#039;Filename?   : &amp;#039; :  &lt;br /&gt;
         input filename&lt;br /&gt;
         if filename = &amp;#039;&amp;#039; then stop&lt;br /&gt;
      end&lt;br /&gt;
      itemname = field(sentence, &amp;#039; &amp;#039; , 3)&lt;br /&gt;
      if itemname[1,1]=&amp;#039;-&amp;#039; or itemname=&amp;#039;&amp;#039; then&lt;br /&gt;
         if oconv(filename,&amp;#039;TVOC;X;;0&amp;#039;)=&amp;#039;&amp;#039; then&lt;br /&gt;
            unix.pathname=filename&lt;br /&gt;
         end else&lt;br /&gt;
            if not(system(11)) then&lt;br /&gt;
               print &amp;#039;Itemname/s? : &amp;#039; :  &lt;br /&gt;
               input itemname&lt;br /&gt;
            end&lt;br /&gt;
         end&lt;br /&gt;
      end&lt;br /&gt;
      if unix.pathname=&amp;#039;&amp;#039; then&lt;br /&gt;
         if filename=&amp;#039;DICT&amp;#039; then&lt;br /&gt;
            filename=&amp;#039;DICT &amp;#039;:itemname&lt;br /&gt;
            file.id=itemname&lt;br /&gt;
            itemname=field(sentence,&amp;#039; &amp;#039;,4)&lt;br /&gt;
            if itemname[1,1]=&amp;#039;-&amp;#039; or itemname=&amp;#039;&amp;#039; then&lt;br /&gt;
               if not(system(11)) then&lt;br /&gt;
                  print &amp;#039;Itemname/s? : &amp;#039; :  &lt;br /&gt;
                  input itemname&lt;br /&gt;
                  if itemname=&amp;#039;&amp;#039; then stop&lt;br /&gt;
               end&lt;br /&gt;
            end&lt;br /&gt;
         end else file.id=filename&lt;br /&gt;
         itemlist=&amp;#039;&amp;#039;&lt;br /&gt;
         for i=2 to 99&lt;br /&gt;
            next.itemname=field(itemname,&amp;#039; &amp;#039;,i)&lt;br /&gt;
            if next.itemname#&amp;#039;&amp;#039; then itemlist&amp;lt;-1&amp;gt;=next.itemname else i=99&lt;br /&gt;
         next i&lt;br /&gt;
         itemname=field(itemname,&amp;#039; &amp;#039;,1)&lt;br /&gt;
      end&lt;br /&gt;
      multiple.items=(itemname=&amp;#039;*&amp;#039;)&lt;br /&gt;
      mode = &amp;#039;&amp;#039;&lt;br /&gt;
      begin CASE&lt;br /&gt;
       CASE option=&amp;#039;V&amp;#039;&lt;br /&gt;
         mode = &amp;#039;--no-wait&amp;#039;&lt;br /&gt;
       case option=&amp;#039;WD&amp;#039;&lt;br /&gt;
         execute &amp;#039;term 132,42,&amp;#039;:field(@term.type,&amp;#039;-&amp;#039;,1):&amp;#039;-wd&amp;#039;&lt;br /&gt;
       case option=&amp;#039;W&amp;#039;&lt;br /&gt;
         execute &amp;#039;term 132,&amp;#039;:field(@term.type,&amp;#039;-&amp;#039;,1):&amp;#039;-w&amp;#039;&lt;br /&gt;
       case option=&amp;#039;D&amp;#039;&lt;br /&gt;
         execute &amp;#039;term 80,42,&amp;#039;:field(@term.type,&amp;#039;-&amp;#039;,1):&amp;#039;-d&amp;#039;&lt;br /&gt;
      end case&lt;br /&gt;
      if unix.pathname#&amp;#039;&amp;#039; then&lt;br /&gt;
         execute &amp;#039;sh -c &amp;quot;ls -al &amp;#039;:filename:&amp;#039;&amp;quot;&amp;#039; capturing output&lt;br /&gt;
         if not(index(output&amp;lt;1&amp;gt;,&amp;#039;No such file&amp;#039;,1)) THEN&lt;br /&gt;
            GOSUB check.for.emacs&lt;br /&gt;
            cmd=&amp;#039;sh -c &amp;quot;UWD=&amp;#039;:current.account.pathname:&amp;#039;;export UWD;&amp;#039;&lt;br /&gt;
            cmd:=&amp;#039;exec /usr/local/bin/emacsclient &amp;#039;:change(unix.pathname,&amp;#039;&amp;amp;&amp;#039;,&amp;#039;\&amp;amp;&amp;#039;,-1):&amp;#039;&amp;quot;&amp;#039;&lt;br /&gt;
            execute cmd&lt;br /&gt;
            execute &amp;#039;term 80,24,&amp;#039;:field(@term.type,&amp;#039;-&amp;#039;,1)&lt;br /&gt;
         end&lt;br /&gt;
         stop&lt;br /&gt;
      end&lt;br /&gt;
      open &amp;#039;&amp;#039; , &amp;#039;VOC&amp;#039; to voc.fv else print &amp;#039;*** VOC file cannot be opened.&amp;#039;; stop&lt;br /&gt;
      read voc.ref from voc.fv, file.id then&lt;br /&gt;
         if index( &amp;#039;FQ&amp;#039; , voc.ref &amp;lt; 1 &amp;gt; [1, 1], 1) = 0 then&lt;br /&gt;
            print &amp;#039;*** File &amp;quot;&amp;#039;:filename:&amp;#039;&amp;quot; does not exist.&amp;#039;; stop&lt;br /&gt;
         end&lt;br /&gt;
      end else print &amp;#039;*** File &amp;quot;&amp;#039;:filename:&amp;#039;&amp;quot; does not exist.&amp;#039;; stop&lt;br /&gt;
      if multiple.items AND NOT(SYSTEM(11)) then execute &amp;#039;select &amp;#039;:filename &lt;br /&gt;
      if itemname=&amp;#039;&amp;#039; or multiple.items then&lt;br /&gt;
         readnext itemname else itemname = &amp;#039;&amp;#039;  &lt;br /&gt;
      end&lt;br /&gt;
      if field(filename,&amp;#039; &amp;#039;,1)=&amp;#039;DICT&amp;#039; then m=5 else m=4&lt;br /&gt;
      if itemlist=&amp;#039;&amp;#039; then&lt;br /&gt;
         for i = m to 99&lt;br /&gt;
            next.itemname = field(sentence, &amp;#039; &amp;#039; , i)&lt;br /&gt;
            if next.itemname[1,1] # &amp;#039;-&amp;#039; then&lt;br /&gt;
               if next.itemname # &amp;#039;&amp;#039; then itemlist &amp;lt; - 1 &amp;gt;= next.itemname else i = 99&lt;br /&gt;
            end&lt;br /&gt;
         next i&lt;br /&gt;
      end&lt;br /&gt;
      itemnames = dcount(itemlist, @FM)&lt;br /&gt;
      read uv.account.item from voc.fv, &amp;#039;UV.ACCOUNT&amp;#039; else&lt;br /&gt;
         write &amp;#039;Q&amp;#039;:@FM:&amp;#039;uv&amp;#039;:@FM:&amp;#039;UV.ACCOUNT&amp;#039; on voc.fv, &amp;#039;UV.ACCOUNT&amp;#039;  &lt;br /&gt;
      end&lt;br /&gt;
      if voc.ref &amp;lt; 1 &amp;gt; [1, 1] = &amp;#039;Q&amp;#039; then &lt;br /&gt;
         write &amp;#039;Q&amp;#039;:@FM:voc.ref&amp;lt;2&amp;gt;:@FM:&amp;#039;VOC&amp;#039; on voc.fv, &amp;#039;Q.VOC.EMACS&amp;#039;&lt;br /&gt;
         open &amp;#039;&amp;#039;, &amp;#039;Q.VOC.EMACS&amp;#039; to q.voc.emacs.fv else&lt;br /&gt;
            print &amp;#039;*** VOC file of Account &amp;#039;:voc.ref&amp;lt;2&amp;gt;:&amp;#039; cannot be opened.&amp;#039;&lt;br /&gt;
            delete voc.fv, &amp;#039;Q.VOC.EMACS&amp;#039;&lt;br /&gt;
            stop&lt;br /&gt;
         end&lt;br /&gt;
         read q.voc.item from q.voc.emacs.fv,voc.ref&amp;lt;3&amp;gt; else&lt;br /&gt;
            print &amp;#039;*** VOC item for Q-pointer file &amp;#039;:filename:&amp;#039; does not exist.&amp;#039;&lt;br /&gt;
            delete voc.fv, &amp;#039;Q.VOC.EMACS&amp;#039;&lt;br /&gt;
            stop&lt;br /&gt;
         end&lt;br /&gt;
         account.pathname=oconv(voc.ref&amp;lt;2&amp;gt;,&amp;#039;TUV.ACCOUNT;X;;11&amp;#039;)&lt;br /&gt;
         if account.pathname=&amp;#039;&amp;#039; then print &amp;#039;*** Account &amp;quot;&amp;#039;:voc.ref &amp;lt; 2 &amp;gt;:&amp;#039;&amp;quot; does not exist.&amp;#039;; stop&lt;br /&gt;
         if not(index(q.voc.item&amp;lt;2&amp;gt;,&amp;#039;/&amp;#039;,1)) and q.voc.item&amp;lt;1&amp;gt;#&amp;#039;Q&amp;#039; then&lt;br /&gt;
            pathname = account.pathname:&amp;#039;/&amp;#039;:q.voc.item &amp;lt; 2 &amp;gt;  &lt;br /&gt;
         end else&lt;br /&gt;
            if q.voc.item&amp;lt;1&amp;gt;# &amp;#039;Q&amp;#039; then pathname = q.voc.item&amp;lt;2&amp;gt;&lt;br /&gt;
            else &lt;br /&gt;
               print &amp;#039;*** File &amp;#039;:filename:&amp;#039; is a Q-pointer to another Q-pointer.  Use correct filename.&amp;#039;&lt;br /&gt;
               delete voc.fv, &amp;#039;Q.VOC.EMACS&amp;#039;&lt;br /&gt;
               stop&lt;br /&gt;
            end&lt;br /&gt;
         end&lt;br /&gt;
         delete voc.fv, &amp;#039;Q.VOC.EMACS&amp;#039;&lt;br /&gt;
      end else &lt;br /&gt;
         substring=voc.ref&amp;lt;m-2&amp;gt;[1,2]&lt;br /&gt;
         begin case&lt;br /&gt;
            case substring=&amp;#039;.&amp;#039;&lt;br /&gt;
               pathname=current.account.pathname&lt;br /&gt;
            case substring[1,1]=&amp;#039;/&amp;#039;&lt;br /&gt;
               pathname=voc.ref&amp;lt;m-2&amp;gt;&lt;br /&gt;
            case 1&lt;br /&gt;
               pathname = current.account.pathname:&amp;#039;/&amp;#039;:voc.ref &amp;lt; m-2 &amp;gt;  &lt;br /&gt;
         end case&lt;br /&gt;
      end&lt;br /&gt;
      execute &amp;#039;SH -c &amp;quot;ls -dl &amp;#039;:change(pathname,&amp;#039;&amp;amp;&amp;#039;,&amp;#039;\&amp;amp;&amp;#039;,-1):&amp;#039;&amp;quot;&amp;#039; capturing output&lt;br /&gt;
      non.hashed.file=(output[1,1]=&amp;#039;d&amp;#039;)&lt;br /&gt;
      execute &amp;#039;sh -c &amp;quot;echo $PWD&amp;quot;&amp;#039; capturing output&lt;br /&gt;
      if current.account.pathname#output&amp;lt;1&amp;gt; then&lt;br /&gt;
         pwd.var=&amp;#039;PWD=&amp;#039;:current.account.pathname:&amp;#039;;export PWD;&amp;#039;&lt;br /&gt;
      end else pwd.var=&amp;#039;&amp;#039;&lt;br /&gt;
      directory.pathname=pathname&lt;br /&gt;
      loop while itemname # &amp;#039;&amp;#039; do&lt;br /&gt;
         if not(non.hashed.file) THEN&lt;br /&gt;
            IF multiple.items THEN&lt;br /&gt;
               GOSUB get.multiple.items&lt;br /&gt;
               adjusted.itemname=current.account.pathname:&amp;quot;/&amp;#039;&amp;quot;:filename:&amp;quot;.uv&amp;#039;&amp;quot;&lt;br /&gt;
            END else&lt;br /&gt;
            execute &amp;#039;COPYI FROM &amp;#039;:filename:&amp;#039; TO &amp;amp;UFD&amp;amp; &amp;#039;:itemname:&amp;#039;,&amp;#039;:itemname:&amp;#039;~ OVERWRITING&amp;#039; capturing output&lt;br /&gt;
            if itemname[1,1]=&amp;#039;.&amp;#039; then itemname=&amp;#039;?&amp;#039;:itemname&lt;br /&gt;
            if index(output,&amp;#039;1 record copied&amp;#039;,1) then&lt;br /&gt;
               execute &amp;#039;SH -c &amp;quot;ls -ald &amp;#039;:current.account.pathname:&amp;#039;/&amp;#039;:itemname:&amp;#039;~&amp;quot;&amp;#039; capturing output&lt;br /&gt;
               if not(index(output,&amp;#039;No such file&amp;#039;,1)) and output[1,1]#&amp;#039;d&amp;#039; then&lt;br /&gt;
                  adjusted.itemname=current.account.pathname:&amp;#039;/&amp;#039;:itemname:&amp;#039;~&amp;#039;&lt;br /&gt;
               end else&lt;br /&gt;
                  pathname=current.account.pathname&lt;br /&gt;
                  gosub adjust.itemname&lt;br /&gt;
               end&lt;br /&gt;
               if index(sentence,&amp;#039;-R&amp;#039;,1) then&lt;br /&gt;
                  execute &amp;#039;sh -c &amp;quot;pr -n: -t &amp;#039;:adjusted.itemname:&amp;#039; &amp;gt; &amp;#039;:adjusted.itemname:&amp;#039;~&amp;quot;&amp;#039; &lt;br /&gt;
                  execute &amp;#039;sh -c &amp;quot;rm &amp;#039;:adjusted.itemname:&amp;#039;&amp;quot;&amp;#039; &lt;br /&gt;
                  execute &amp;#039;sh -c &amp;quot;mv &amp;#039;:adjusted.itemname:&amp;#039;~ &amp;#039;:adjusted.itemname:&amp;#039;&amp;quot;&amp;#039; &lt;br /&gt;
                  if itemname[1,1]=&amp;#039;?&amp;#039; then itemname=itemname[2,99]&lt;br /&gt;
                  data &amp;#039;i Record Id: &amp;#039;:itemname&lt;br /&gt;
                  data &amp;#039;c/^252/|/g999&amp;#039;&lt;br /&gt;
                  data &amp;#039;t&amp;#039;&lt;br /&gt;
                  data &amp;#039;c/^253/}/g999&amp;#039;&lt;br /&gt;
                  data &amp;#039;fi&amp;#039;&lt;br /&gt;
                  execute &amp;#039;ED &amp;amp;UFD&amp;amp; &amp;#039;:itemname:&amp;#039;~&amp;#039; capturing output&lt;br /&gt;
               end&lt;br /&gt;
            end else&lt;br /&gt;
               pathname=current.account.pathname&lt;br /&gt;
               gosub adjust.itemname&lt;br /&gt;
               END&lt;br /&gt;
            end&lt;br /&gt;
            GOSUB check.for.emacs&lt;br /&gt;
            cmd=&amp;#039;sh -c &amp;quot;UWD=&amp;#039;:current.account.pathname:&amp;#039;;export UWD;&amp;#039;&lt;br /&gt;
            cmd := &amp;#039;exec /usr/local/bin/emacsclient &amp;#039;:mode:&amp;#039; &amp;#039;:change(adjusted.itemname,&amp;#039;&amp;amp;&amp;#039;,&amp;#039;\&amp;amp;&amp;#039;,-1):&amp;#039;&amp;quot;&amp;#039;&lt;br /&gt;
            execute cmd&lt;br /&gt;
            IF multiple.items THEN&lt;br /&gt;
               IF option#&amp;#039;V&amp;#039; THEN &lt;br /&gt;
                  PRINT &amp;#039;Rewrite multiple items to file? : &amp;#039;:&lt;br /&gt;
                  INPUT response, 1&lt;br /&gt;
                  IF index( &amp;#039;yY&amp;#039; , response, 1) and response # &amp;#039;&amp;#039; THEN&lt;br /&gt;
                     GOSUB write.multiple.items&lt;br /&gt;
                  END&lt;br /&gt;
                  itemname = &amp;#039;&amp;#039;&lt;br /&gt;
               END &lt;br /&gt;
            END else&lt;br /&gt;
               if not(index(sentence,&amp;#039;-R&amp;#039;,1)) then&lt;br /&gt;
                  execute &amp;#039;sh -c &amp;quot;ls &amp;#039;:adjusted.itemname:&amp;#039;&amp;quot;&amp;#039; capturing output&lt;br /&gt;
                  if not(index(output,&amp;#039;No such file&amp;#039;,1)) then &lt;br /&gt;
                     if itemname[1,1]=&amp;#039;?&amp;#039; then itemname=itemname[2,99]&lt;br /&gt;
                     execute &amp;#039;COPYI FROM &amp;amp;UFD&amp;amp; TO &amp;#039;:filename:&amp;#039; &amp;#039;:itemname:&amp;#039;~,&amp;#039;:itemname:&amp;#039; OVERWRITING DELETING&amp;#039; capturing output&lt;br /&gt;
                  end&lt;br /&gt;
               end&lt;br /&gt;
               execute &amp;#039;DELETE &amp;amp;UFD&amp;amp; &amp;#039;:itemname:&amp;#039;~&amp;#039; capturing output&lt;br /&gt;
               dirname=itemname:&amp;#039;~&amp;#039;&lt;br /&gt;
               execute \SELECT &amp;amp;UFD&amp;amp; LIKE &amp;quot;&amp;#039;:dirname[1,14]:&amp;#039;...&amp;quot;\ rtnlist selected.items capturing output&lt;br /&gt;
               if @selected&amp;gt;0 then&lt;br /&gt;
                  data &amp;#039;Y&amp;#039;&lt;br /&gt;
                  execute &amp;#039;DELETE &amp;amp;UFD&amp;amp;&amp;#039; passlist selected.items capturing output&lt;br /&gt;
               end &lt;br /&gt;
               execute &amp;#039;SH -c &amp;quot;rm -r &amp;#039;:dirname[1,14]:&amp;#039;&amp;quot;&amp;#039; capturing output&lt;br /&gt;
            end&lt;br /&gt;
         end else&lt;br /&gt;
            execute &amp;#039;SH -c &amp;quot;ls -adl &amp;#039;:change(directory.pathname,&amp;#039;&amp;amp;&amp;#039;,&amp;#039;\&amp;amp;&amp;#039;,-1):&amp;#039;/&amp;#039;:itemname:&amp;#039;&amp;quot;&amp;#039; capturing output&lt;br /&gt;
            if index(output,&amp;#039;No such file&amp;#039;,1) or output[1,1]=&amp;#039;d&amp;#039; then&lt;br /&gt;
               execute &amp;#039;sh -c &amp;quot;ls -a &amp;#039;:directory.pathname:&amp;#039;/.Type1&amp;quot;&amp;#039; capturing output&lt;br /&gt;
               if not(index(output,&amp;#039;No such file&amp;#039;,1)) then&lt;br /&gt;
                  pathname=directory.pathname&lt;br /&gt;
                  gosub adjust.itemname&lt;br /&gt;
               end else adjusted.itemname=directory.pathname:&amp;#039;/&amp;#039;:itemname&lt;br /&gt;
            end else adjusted.itemname=directory.pathname:&amp;#039;/&amp;#039;:itemname&lt;br /&gt;
            pathname=adjusted.itemname&lt;br /&gt;
            if index(sentence,&amp;#039;-R&amp;#039;,1) then&lt;br /&gt;
               execute &amp;#039;sh -c &amp;quot;pr -n: -t &amp;#039;:change(pathname,&amp;#039;&amp;amp;&amp;#039;,&amp;#039;\&amp;amp;&amp;#039;,-1):&amp;#039; &amp;gt; &amp;#039;:change(pathname,&amp;#039;&amp;amp;&amp;#039;,&amp;#039;\&amp;amp;&amp;#039;,-1):&amp;#039;~&amp;quot;&amp;#039; &lt;br /&gt;
               pathname:=&amp;#039;~&amp;#039;&lt;br /&gt;
            end&lt;br /&gt;
            filename=change(filename,&amp;#039;&amp;amp;&amp;#039;,&amp;#039;\&amp;amp;&amp;#039;,-1)&lt;br /&gt;
            GOSUB check.for.emacs&lt;br /&gt;
            cmd=&amp;#039;sh -c &amp;quot;UWD=&amp;#039;:current.account.pathname:&amp;#039;;export UWD;&amp;#039;:pwd.var&lt;br /&gt;
            cmd:=&amp;#039;SRCDIR=&amp;#039;:filename:&amp;#039;;export SRCDIR;&amp;#039;&lt;br /&gt;
            cmd:=&amp;#039;SRCFILE=&amp;#039;:itemname:&amp;#039;;export SRCFILE;&amp;#039;&lt;br /&gt;
            cmd := &amp;#039;exec /usr/local/bin/emacsclient &amp;#039;:mode:&amp;#039; &amp;#039;:change(pathname,&amp;#039;&amp;amp;&amp;#039;,&amp;#039;\&amp;amp;&amp;#039;,-1):&amp;#039;&amp;quot;&amp;#039;&lt;br /&gt;
            execute cmd&lt;br /&gt;
            pathname = change(pathname,&amp;#039;&amp;amp;&amp;#039;,&amp;#039;\&amp;amp;&amp;#039;,-1)&lt;br /&gt;
            if index(sentence,&amp;#039;-R&amp;#039;,1) then&lt;br /&gt;
               execute &amp;#039;sh -c &amp;quot;rm &amp;#039;:pathname:&amp;#039;&amp;quot;&amp;#039; capturing output&lt;br /&gt;
            end else&lt;br /&gt;
               execute &amp;#039;sh -c &amp;quot;ls &amp;#039;:pathname:&amp;#039;&amp;quot;&amp;#039; capturing output&lt;br /&gt;
               if index(output,&amp;#039;No such file&amp;#039;,1) then&lt;br /&gt;
                  dirpath=pathname[1,index(pathname,itemname[1,14],1)-1]:itemname[1,14]&lt;br /&gt;
                  execute &amp;#039;sh -c &amp;quot;ls -dl &amp;#039;:dirpath:&amp;#039;&amp;quot;&amp;#039; capturing output&lt;br /&gt;
                  if output[1,1] = &amp;#039;d&amp;#039; then&lt;br /&gt;
                     execute &amp;#039;sh -c &amp;quot;ls -l &amp;#039;:dirpath:&amp;#039;&amp;quot;&amp;#039; capturing output&lt;br /&gt;
                     if output&amp;lt;1&amp;gt; = &amp;#039;total 0&amp;#039; then&lt;br /&gt;
                        execute &amp;#039;sh -c &amp;quot;rm -r &amp;#039;:dirpath:&amp;#039;&amp;quot;&amp;#039; capturing output&lt;br /&gt;
                     end&lt;br /&gt;
                  end&lt;br /&gt;
               end&lt;br /&gt;
            end&lt;br /&gt;
         END&lt;br /&gt;
         * IF NOT(multiple.items) then&lt;br /&gt;
         if itemnames then&lt;br /&gt;
            itemname = itemlist &amp;lt; 1 &amp;gt;  &lt;br /&gt;
            itemnames = itemnames - 1&lt;br /&gt;
            del itemlist &amp;lt; 1 &amp;gt;  &lt;br /&gt;
         end else&lt;br /&gt;
            readnext itemname else itemname = &amp;#039;&amp;#039;  &lt;br /&gt;
         end&lt;br /&gt;
         if itemname # &amp;#039;&amp;#039; then&lt;br /&gt;
            print &amp;#039;Continue? (Y=default[[/N]]) : &amp;#039; :  &lt;br /&gt;
            input response, 1&lt;br /&gt;
            if index( &amp;#039;nN&amp;#039; , response, 1) and response # &amp;#039;&amp;#039; then itemname = &amp;#039;&amp;#039;  &lt;br /&gt;
            END&lt;br /&gt;
         * end&lt;br /&gt;
      repeat&lt;br /&gt;
      execute &amp;#039;term 80,24,&amp;#039;:field(@term.type,&amp;#039;-&amp;#039;,1)&lt;br /&gt;
      stop&lt;br /&gt;
*&lt;br /&gt;
adjust.itemname: &lt;br /&gt;
      orig.itemname=itemname&lt;br /&gt;
      adjusted.itemname=&amp;#039;&amp;#039;&lt;br /&gt;
      if not(non.hashed.file) then itemname=itemname:&amp;#039;~&amp;#039;  &lt;br /&gt;
      loop while len(itemname) &amp;gt; 13 do&lt;br /&gt;
         pathname=pathname:&amp;#039;/&amp;#039;:itemname[1,14]&lt;br /&gt;
         if adjusted.itemname#&amp;#039;&amp;#039; then &lt;br /&gt;
            adjusted.itemname=adjusted.itemname[1,index(adjusted.itemname,itemname,1)-2]&lt;br /&gt;
         end&lt;br /&gt;
         if len(itemname) = 14 then &lt;br /&gt;
            adjusted.itemname = adjusted.itemname:itemname:&amp;#039;/?&amp;#039;  &lt;br /&gt;
         end else &lt;br /&gt;
            if itemname[15, 1] = &amp;#039;.&amp;#039; then&lt;br /&gt;
               adjusted.itemname = adjusted.itemname:itemname[1, 14]:&amp;#039;/?&amp;#039;:itemname[15, 99]&lt;br /&gt;
            end else adjusted.itemname = adjusted.itemname:itemname[1, 14]:&amp;#039;/&amp;#039;:itemname[15, 99]&lt;br /&gt;
         end&lt;br /&gt;
         execute &amp;#039;sh -c &amp;quot;ls -dl &amp;#039;:pathname:&amp;#039;&amp;quot;&amp;#039; capturing output&lt;br /&gt;
         if index(output,&amp;#039;No such file&amp;#039;,1) then&lt;br /&gt;
            cmd=&amp;#039;sh -c &amp;quot;mkdir &amp;#039;:pathname:&amp;#039;&amp;quot;&amp;#039;&lt;br /&gt;
            execute cmd capturing output&lt;br /&gt;
         end&lt;br /&gt;
         itemname=field(adjusted.itemname,&amp;#039;/&amp;#039;,count(adjusted.itemname,&amp;#039;/&amp;#039;)+1)&lt;br /&gt;
      repeat&lt;br /&gt;
      if adjusted.itemname=&amp;#039;&amp;#039; then&lt;br /&gt;
         if non.hashed.file then adjusted.itemname=pathname:&amp;#039;/&amp;#039;:itemname&lt;br /&gt;
         else adjusted.itemname = itemname&lt;br /&gt;
      end else&lt;br /&gt;
         adjusted.itemname=pathname:&amp;#039;/&amp;#039;:itemname&lt;br /&gt;
      end&lt;br /&gt;
      itemname=orig.itemname&lt;br /&gt;
      return&lt;br /&gt;
*&lt;br /&gt;
check.for.emacs:&lt;br /&gt;
      *&lt;br /&gt;
      * Start emacs as a server if it isn&amp;#039;t already running.&lt;br /&gt;
      count=0&lt;br /&gt;
      cmd=&amp;#039;sh -c &amp;quot;ps -fu &amp;#039;:@LOGNAME:&amp;#039; | grep emacs | grep -v grep&amp;quot;&amp;#039;&lt;br /&gt;
      EXECUTE cmd CAPTURING output&lt;br /&gt;
      IF output = &amp;#039;&amp;#039; THEN&lt;br /&gt;
         EXECUTE &amp;#039;sh -c &amp;quot;emacs -u $HOME/.emacs -f server-start &amp;amp;&amp;quot;&amp;#039;&lt;br /&gt;
         SLEEP 5&lt;br /&gt;
         loop while (output = &amp;#039;&amp;#039; and count &amp;lt; 1000 ) do&lt;br /&gt;
            EXECUTE cmd CAPTURING output&lt;br /&gt;
            sleep 5&lt;br /&gt;
            count += 1&lt;br /&gt;
         repeat&lt;br /&gt;
      end&lt;br /&gt;
      RETURN&lt;br /&gt;
*&lt;br /&gt;
get.multiple.items:&lt;br /&gt;
      IF SYSTEM(11) THEN&lt;br /&gt;
         itemcount = @SELECTED&lt;br /&gt;
      END ELSE&lt;br /&gt;
         EXECUTE &amp;#039;COUNT &amp;#039;:filename CAPTURING output&lt;br /&gt;
         itemcount = FIELD(output, @FM, 2)&lt;br /&gt;
         itemcount = FIELD(itemcount, &amp;#039; &amp;#039;, 1)&lt;br /&gt;
      END&lt;br /&gt;
      DIM multipleitems(itemcount)&lt;br /&gt;
      original.itemcount = itemcount&lt;br /&gt;
      original.items = &amp;#039;&amp;#039;&lt;br /&gt;
      OPEN &amp;#039;&amp;#039;,filename TO DATAFILE ELSE STOP&lt;br /&gt;
      itemindex = itemcount&lt;br /&gt;
      LOOP WHILE itemname # &amp;#039;&amp;#039; DO&lt;br /&gt;
         IF option=&amp;#039;V&amp;#039; THEN&lt;br /&gt;
            READ @RECORD FROM DATAFILE, itemname ELSE STOP&lt;br /&gt;
         END ELSE&lt;br /&gt;
            READU @RECORD FROM DATAFILE, itemname ELSE STOP&lt;br /&gt;
         END&lt;br /&gt;
         @RECORD = CHANGE(@RECORD, @FM, CHAR(127), -1)&lt;br /&gt;
         multipleitems(itemindex) = itemname:@IM:@RECORD&lt;br /&gt;
         original.items&amp;lt;-1&amp;gt; = itemname&lt;br /&gt;
         itemindex -= 1&lt;br /&gt;
         READNEXT itemname ELSE itemname=&amp;#039;&amp;#039;&lt;br /&gt;
      REPEAT&lt;br /&gt;
      CLOSE DATAFILE&lt;br /&gt;
      IF option#&amp;#039;V&amp;#039; THEN&lt;br /&gt;
         OPEN &amp;#039;&amp;#039;,&amp;#039;&amp;amp;UFD&amp;amp;&amp;#039; TO DATAFILE ELSE STOP&lt;br /&gt;
         MATWRITE multipleitems TO DATAFILE,filename:&amp;#039;.uv&amp;#039; ELSE STOP&lt;br /&gt;
         CLOSE DATAFILE&lt;br /&gt;
      END&lt;br /&gt;
      return&lt;br /&gt;
*&lt;br /&gt;
write.multiple.items:&lt;br /&gt;
* Back up the original file prior TO writing&lt;br /&gt;
      EXECUTE &amp;#039;sh -c &amp;quot;cp &amp;#039;:current.account.pathname:&amp;#039;/&amp;#039;:filename:&amp;#039; &amp;#039;:current.account.pathname:&amp;#039;/&amp;#039;:filename:&amp;#039;~&amp;quot;&amp;#039;&lt;br /&gt;
      OPEN &amp;#039;&amp;#039;,&amp;#039;&amp;amp;UFD&amp;amp;&amp;#039; TO DATAFILE ELSE STOP&lt;br /&gt;
      MATREAD multipleitems FROM DATAFILE,filename:&amp;#039;.uv&amp;#039; ELSE STOP&lt;br /&gt;
      itemcount = INMAT()&lt;br /&gt;
      DELETE DATAFILE, filename:&amp;#039;.uv&amp;#039;&lt;br /&gt;
      DELETE DATAFILE, filename:&amp;#039;.uv~&amp;#039;&lt;br /&gt;
      CLOSE DATAFILE&lt;br /&gt;
      IF itemcount = 0 THEN&lt;br /&gt;
         itemindex = original.itemcount&lt;br /&gt;
      END else&lt;br /&gt;
         itemindex = itemcount&lt;br /&gt;
      END&lt;br /&gt;
      &lt;br /&gt;
      OPEN &amp;#039;&amp;#039;,filename TO DATAFILE ELSE STOP&lt;br /&gt;
      LOOP WHILE itemindex &amp;gt; 0 DO&lt;br /&gt;
         @RECORD = multipleitems(itemindex)&lt;br /&gt;
         itemname = FIELD(@RECORD, @IM, 1)&lt;br /&gt;
         @RECORD = CHANGE(@RECORD, itemname:@IM, &amp;#039;&amp;#039;)&lt;br /&gt;
         @RECORD = CHANGE(@RECORD, CHAR(127), @FM, -1)&lt;br /&gt;
         WRITE @RECORD ON DATAFILE, itemname&lt;br /&gt;
         LOCATE itemname IN original.items SETTING pos ELSE pos = 0&lt;br /&gt;
         IF pos # 0 THEN original.items&amp;lt;pos&amp;gt; = &amp;#039;&amp;#039;&lt;br /&gt;
         itemindex -= 1&lt;br /&gt;
      REPEAT&lt;br /&gt;
      IF itemcount = 0 THEN&lt;br /&gt;
         LOOP WHILE multipleitems(0) # &amp;#039;&amp;#039; DO&lt;br /&gt;
            @RECORD = FIELD(multipleitems(0), @FM, 1)&lt;br /&gt;
            itemname = FIELD(@RECORD, @IM, 1)&lt;br /&gt;
            @RECORD = CHANGE(@RECORD, itemname:@IM, &amp;#039;&amp;#039;)&lt;br /&gt;
            @RECORD = CHANGE(@RECORD, CHAR(127), @FM, -1)&lt;br /&gt;
            WRITE @RECORD ON DATAFILE, itemname&lt;br /&gt;
            LOCATE itemname IN original.items SETTING pos ELSE pos = 0&lt;br /&gt;
            IF pos # 0 THEN original.items&amp;lt;pos&amp;gt; = &amp;#039;&amp;#039;&lt;br /&gt;
            multipleitems(0) = FIELD(multipleitems(0), @FM, 2, 1000)&lt;br /&gt;
         REPEAT&lt;br /&gt;
      END&lt;br /&gt;
      itemindex = original.itemcount&lt;br /&gt;
      LOOP WHILE itemindex &amp;gt; 0 DO&lt;br /&gt;
         IF original.items&amp;lt;itemindex&amp;gt; # &amp;#039;&amp;#039; THEN&lt;br /&gt;
            DELETE DATAFILE, original.items&amp;lt;itemindex&amp;gt;&lt;br /&gt;
         END&lt;br /&gt;
         itemindex -= 1&lt;br /&gt;
      REPEAT&lt;br /&gt;
      CLOSE DATAFILE&lt;br /&gt;
      print &amp;#039;*** NOTE:  Multiple records edited.  A backup, &amp;quot;&amp;#039;:itemname:&amp;#039;~&amp;quot;, made prior&amp;#039;&lt;br /&gt;
      print &amp;#039;        to updating can be found in the current directory.&amp;#039; &lt;br /&gt;
      return&lt;br /&gt;
*&lt;br /&gt;
   end&lt;br /&gt;
&amp;lt;/PRE&amp;gt;&lt;/div&gt;</summary>
		<author><name>Conversion script</name></author>
	</entry>
</feed>