Annotation of 43BSD/contrib/X/xted/run_ctrlat.clu, revision 1.1.1.1

1.1       root        1: run_ctrlat = proc (e: env, c: char) signals (errmsg(string), stop(env, string))
                      2:     if e.this_arg > 1  cor  e.this_arg < 0
                      3:        then top_display(e, "GCing")
                      4:            secs1, msecs1, usecs1: int := _get_runtime()
                      5:            freed: int := gc()
                      6:            left: int := _heap_size()
                      7:            secs2, msecs2, usecs2: int := _get_runtime()
                      8:            secs2, msecs2, usecs2 := _longsub(secs2, msecs2, usecs2,
                      9:                                              secs1, msecs1, usecs1)
                     10:            top_display(e, "GC #" || int$unparse(_gc$count()) || ": " ||
                     11:                           int$unparse(freed) || " freed, " ||
                     12:                           int$unparse(left) || " left, " ||
                     13:                           _time_format(secs2, msecs2, usecs2))
                     14:      elseif e.this_arg = 0
                     15:        then if env$fetch_num(e, "careful", 0) ~= 0
                     16:               then cnt: int := 0
                     17:                    nms: string := ""
                     18:                    for b: buf, bnm, fnm: string in bufset$all_buffers() do
                     19:                        if buf$any_changed(b)
                     20:                           then if cnt = 2
                     21:                                   then nms := nms || ", ..."
                     22:                                        break
                     23:                                 elseif cnt = 1
                     24:                                   then nms := string$append("s" || nms, ',')
                     25:                                 end
                     26:                                nms := string$append(nms, ' ') || bnm
                     27:                                cnt := cnt + 1
                     28:                           end
                     29:                        end
                     30:                    if cnt > 0  cand
                     31:                       ~mconfirm(e, "Buffer" || nms || " changed, quit anyway", true)
                     32:                       then return end
                     33:               end
                     34:            keypad: int := env$fetch_num(e, "keypad", 0)
                     35:            if keypad ~= 0
                     36:               then _set_keypad_mode(false) end
                     37:            _normal_chars()
                     38:            screen$destroy()
                     39:            quit_()
                     40:      else olines, ochars: int := _get_screen_size()
                     41:          _normal_chars()
                     42:          _ted_chars()
                     43:          nlines, nchars: int := _get_screen_size()
                     44:          if nlines ~= olines  cor  nchars ~= ochars
                     45:             then n: int := 1
                     46:                  otop: int := 0
                     47:                  ntop: int := 0
                     48:                  for ee: env in winset$all() do
                     49:                      ee.size := (ee.size * nlines) / olines
                     50:                      ee.width := nchars - 1
                     51:                      if ee.top_line = otop
                     52:                         then ee.top_line := ntop
                     53:                         else otop := ee.top_line
                     54:                              ntop := n
                     55:                              ee.top_line := n
                     56:                              n := n + ee.size + 1
                     57:                         end
                     58:                      if env$is_argenv(ee)
                     59:                         then continue end
                     60:                      title: string := ee.title
                     61:                      i: int := string$size(title)
                     62:                      while title[i] = '-'  cor  title[i] = ' ' do
                     63:                          i := i - 1
                     64:                          end except when bounds: end
                     65:                      update_title(ee, string$substr(title, 1, i))
                     66:                      end
                     67:                  if n < nlines
                     68:                     then n := nlines - n
                     69:                          for ee: env in winset$all() do
                     70:                              if ee.top_line = 1
                     71:                                 then ee.size := ee.size + n
                     72:                                 else ee.top_line := ee.top_line + n
                     73:                                 end
                     74:                              end
                     75:                     end
                     76:             end
                     77:          env$clear(e)
                     78:      end resignal errmsg
                     79:     end run_ctrlat

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.