Annotation of 43BSD/contrib/X/xted/run_ctrlat.clu, revision 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.