about summary refs log tree commit diff stats
path: root/dwm.c
diff options
context:
space:
mode:
Diffstat (limited to 'dwm.c')
0 files changed, 0 insertions, 0 deletions
. Agaram <vc@akkartik.com> 2015-01-25 11:38:13 -0800 621 - fix race condition in buffered-stdin.mu' href='/akkartik/mu/commit/buffered-stdin.mu?h=hlt&id=d1f57fa1ab95a36a562d2b75a064bc387bd2d5d3'>d1f57fa1 ^
3a0be565 ^


3a0be565 ^
09e2e533 ^
8ab4b12c ^
3a0be565 ^
4ca73eb6 ^



5b698455 ^
4ca73eb6 ^
7d2c2d55 ^


4ca73eb6 ^



3a0be565 ^


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
                                                    


                                                               
                    


                                                                                                                      
                
                                                            
                                                                                                                          
         



                                                                
                                                                                                  
                                                                    


                                         



                                                                     


          
; reads lines, prints them back when you hit 'enter'
; dies if you wait a while, because so far we never free memory
(function main [
  (default-space:space-address <- new space:literal 30:literal)
  (cursor-mode) ;? 1
  ; hook up stdin
  (stdin:channel-address <- init-channel 1:literal)
  (fork-helper send-keys-to-stdin:fn nil:literal/globals nil:literal/limit nil:literal/keyboard stdin:channel-address)
  ; buffer stdin
  (buffered-stdin:channel-address <- init-channel 1:literal)
  (fork-helper buffer-lines:fn nil:literal/globals nil:literal/limit stdin:channel-address buffered-stdin:channel-address)
  { begin
    ; now read characters from the buffer until 'enter' is typed
    (s:string-address <- new "? ")
    (print-string nil:literal/terminal s:string-address)
    { begin
      (x:tagged-value buffered-stdin:channel-address/deref <- read buffered-stdin:channel-address)
      (c:character <- maybe-coerce x:tagged-value character:literal)
;?       ($print (("AAA " literal))) ;? 1
;?       ($print c:character) ;? 1
;?       ($print (("\n" literal))) ;? 1
      (print-character nil:literal/terminal c:character)
      (line-done?:boolean <- equal c:character ((#\newline literal)))
      (loop-unless line-done?:boolean)
    }
    (loop)
  }
])