spacepaste

diff --git a/1c988769-68cd-42e9-a58b-7beecb65cdfd/bin/ps.lua b/1c988769-68cd-42e9-a58b-7beecb65cdfd/bin/ps.lua
new file mode 100644
index 0000000..a89093e
/dev/null
b/1c988769-68cd-42e9-a58b-7beecb65cdfd/bin/ps.lua
1 local process = require('process')
2
3
4 local tree = {['<root>'] = {children = {}}}
5 local procs = process.list()
6 for i = 1, procs.n do
7 local proc = procs[i]
8 tree[proc.name] = {proc = proc, children = {}}
9 end
10 for i = 1, procs.n do
11 local proc = procs[i]
12 table.insert(tree[proc.parent or '<root>'].children, tree[proc.name])
13 end
14
15 local function show(t, prefix)
16 if t.proc then
17 print(string.format('%s - %s: %s', prefix, t.proc.name, t.proc.command))
18 prefix = prefix .. ' '
19 end
20 for i = 1, #t.children do
21 show(t.children[i], prefix)
22 end
23 end
24
25 show(tree['<root>'], '')
diff --git a/1c988769-68cd-42e9-a58b-7beecb65cdfd/etc/procnames.txt b/1c988769-68cd-42e9-a58b-7beecb65cdfd/etc/procnames.txt
new file mode 100644
index 0000000..5bee04c
/dev/null
b/1c988769-68cd-42e9-a58b-7beecb65cdfd/etc/procnames.txt
1 aaron
2 abigail
3 abraham
4 ada
5 adam
6 addie
7 adele
8 adrian
9 adriana
10 adrienne
11 agnes
12 aida
13 aimee
14 al
15 alan
16 albert
17 alberta
18 alberto
19 alejandro
20 alex
21 alexander
22 alexandra
23 alexis
24 alfonso
25 alfred
26 alfredo
27 alice
28 alicia
29 alisha
30 alison
31 allan
32 allen
33 allison
34 alma
35 alton
36 alvin
37 alyssa
38 amanda
39 amber
40 amelia
41 amy
42 ana
43 andre
44 andrea
45 andres
46 andrew
47 andy
48 angel
49 angela
50 angelica
51 angelina
52 angelo
53 angie
54 anita
55 ann
56 anna
57 anne
58 annette
59 annie
60 anthony
61 antoinette
62 antonia
63 antonio
64 april
65 archie
66 arlene
67 armando
68 arnold
69 arthur
70 arturo
71 ashley
72 aubrey
73 audrey
74 aurora
75 austin
76 barbara
77 barry
78 beatrice
79 becky
80 belinda
81 ben
82 benjamin
83 bennie
84 benny
85 bernadette
86 bernard
87 bernice
88 bertha
89 bessie
90 beth
91 bethany
92 betsy
93 bettie
94 betty
95 beulah
96 beverly
97 bill
98 billie
99 billy
100 blake
101 blanca
102 blanche
103 bob
104 bobbie
105 bobby
106 bonita
107 bonnie
108 brad
109 bradley
110 brandi
111 brandon
112 brandy
113 brenda
114 brent
115 brett
116 brian
117 bridget
118 brittany
119 brittney
120 brooke
121 bruce
122 bryan
123 bryant
124 byron
125 caitlin
126 caleb
127 calvin
128 cameron
129 camille
130 candace
131 candice
132 cara
133 carl
134 carla
135 carlos
136 carlton
137 carmen
138 carol
139 carole
140 caroline
141 carolyn
142 carrie
143 carroll
144 cary
145 casey
146 cassandra
147 cassie
148 catherine
149 cathy
150 cecelia
151 cecil
152 cecilia
153 cedric
154 celeste
155 celia
156 cesar
157 chad
158 charlene
159 charles
160 charlie
161 charlotte
162 chelsea
163 cheri
164 cheryl
165 chester
166 chris
167 christa
168 christian
169 christie
170 christina
171 christine
172 christopher
173 christy
174 cindy
175 claire
176 clara
177 clarence
178 clark
179 claude
180 claudia
181 clayton
182 cleo
183 clifford
184 clifton
185 clint
186 clinton
187 clyde
188 cody
189 colin
190 colleen
191 connie
192 constance
193 cora
194 corey
195 corinne
196 cory
197 courtney
198 craig
199 cristina
200 crystal
201 curtis
202 cynthia
203 daisy
204 dale
205 dallas
206 damon
207 dan
208 dana
209 daniel
210 danielle
211 danny
212 darla
213 darlene
214 darrel
215 darrell
216 darren
217 darryl
218 daryl
219 dave
220 david
221 dawn
222 dean
223 deanna
224 debbie
225 debora
226 deborah
227 debra
228 delbert
229 delia
230 della
231 delores
232 deloris
233 dena
234 denise
235 dennis
236 derek
237 derrick
238 desiree
239 devin
240 dewey
241 diana
242 diane
243 dianna
244 dianne
245 dina
246 dixie
247 dolores
248 dominic
249 dominique
250 don
251 donald
252 donna
253 donnie
254 dora
255 doreen
256 doris
257 dorothy
258 dorthy
259 doug
260 douglas
261 doyle
262 drew
263 duane
264 dustin
265 dwayne
266 dwight
267 earl
268 earnest
269 ebony
270 ed
271 eddie
272 edgar
273 edith
274 edmund
275 edna
276 eduardo
277 edward
278 edwin
279 effie
280 eileen
281 elaine
282 elbert
283 eleanor
284 elena
285 elias
286 elisa
287 elisabeth
288 elizabeth
289 ella
290 ellen
291 ellis
292 elmer
293 eloise
294 elsa
295 elsie
296 elva
297 elvira
298 emily
299 emma
300 enrique
301 eric
302 erica
303 erick
304 erik
305 erika
306 erin
307 erma
308 ernest
309 ernestine
310 ernesto
311 ervin
312 essie
313 estella
314 estelle
315 esther
316 ethel
317 etta
318 eugene
319 eugenia
320 eula
321 eunice
322 eva
323 evan
324 evelyn
325 everett
326 faith
327 fannie
328 faye
329 felicia
330 felipe
331 felix
332 fern
333 fernando
334 flora
335 florence
336 floyd
337 forrest
338 frances
339 francine
340 francis
341 francisca
342 francisco
343 frank
344 frankie
345 franklin
346 fred
347 freda
348 freddie
349 frederick
350 fredrick
351 gabriel
352 gail
353 gale
354 garrett
355 garry
356 gary
357 gayle
358 gene
359 geneva
360 genevieve
361 geoffrey
362 george
363 georgia
364 gerald
365 geraldine
366 gerard
367 gerardo
368 gertrude
369 gilbert
370 gilberto
371 gina
372 ginger
373 gladys
374 glen
375 glenda
376 glenn
377 gloria
378 goldie
379 gordon
380 grace
381 grant
382 greg
383 gregg
384 gregory
385 gretchen
386 guadalupe
387 guillermo
388 gustavo
389 guy
390 gwen
391 gwendolyn
392 hannah
393 harold
394 harriet
395 harry
396 harvey
397 hattie
398 hazel
399 heather
400 hector
401 heidi
402 helen
403 helene
404 henrietta
405 henry
406 herbert
407 herman
408 hilda
409 holly
410 homer
411 hope
412 horace
413 howard
414 hubert
415 hugh
416 hugo
417 ian
418 ida
419 ignacio
420 ina
421 inez
422 ingrid
423 ira
424 irene
425 iris
426 irma
427 irving
428 isaac
429 isabel
430 ismael
431 israel
432 iva
433 ivan
434 jack
435 jackie
436 jacob
437 jacqueline
438 jacquelyn
439 jaime
440 jake
441 james
442 jamie
443 jan
444 jana
445 jane
446 janelle
447 janet
448 janette
449 janice
450 janie
451 janis
452 jared
453 jasmine
454 jason
455 javier
456 jay
457 jean
458 jeanette
459 jeanne
460 jeannette
461 jeannie
462 jeff
463 jeffery
464 jeffrey
465 jenifer
466 jenna
467 jennie
468 jennifer
469 jenny
470 jeremiah
471 jeremy
472 jermaine
473 jerome
474 jerry
475 jesse
476 jessica
477 jessie
478 jesus
479 jewel
480 jewell
481 jill
482 jim
483 jimmie
484 jimmy
485 jo
486 joan
487 joann
488 joanna
489 joanne
490 jodi
491 jody
492 joe
493 joel
494 joey
495 johanna
496 john
497 johnathan
498 johnnie
499 johnny
500 jon
501 jonathan
502 jonathon
503 jordan
504 jorge
505 jose
506 josefina
507 joseph
508 josephine
509 josh
510 joshua
511 josie
512 joy
513 joyce
514 juan
515 juana
516 juanita
517 judith
518 judy
519 julia
520 julian
521 julie
522 julio
523 julius
524 june
525 justin
526 kara
527 karen
528 kari
529 karin
530 karl
531 karla
532 kate
533 katherine
534 kathleen
535 kathryn
536 kathy
537 katie
538 katrina
539 kay
540 kayla
541 keith
542 kelley
543 kelli
544 kellie
545 kelly
546 kelsey
547 kelvin
548 ken
549 kendra
550 kenneth
551 kenny
552 kent
553 kerri
554 kerry
555 kevin
556 kim
557 kimberly
558 kirk
559 kris
560 krista
561 kristen
562 kristi
563 kristie
564 kristin
565 kristina
566 kristine
567 kristopher
568 kristy
569 krystal
570 kurt
571 kyle
572 lana
573 lance
574 larry
575 latasha
576 latonya
577 latoya
578 laura
579 laurel
580 lauren
581 laurence
582 laurie
583 laverne
584 lawrence
585 leah
586 lee
587 leigh
588 lela
589 leland
590 lena
591 lenora
592 leo
593 leon
594 leona
595 leonard
596 leroy
597 lesley
598 leslie
599 lester
600 leticia
601 levi
602 lewis
603 lila
604 lillian
605 lillie
606 linda
607 lindsay
608 lindsey
609 lionel
610 lisa
611 lloyd
612 lois
613 lola
614 lonnie
615 lora
616 loren
617 lorena
618 lorene
619 lorenzo
620 loretta
621 lori
622 lorna
623 lorraine
624 lottie
625 lou
626 louis
627 louise
628 lourdes
629 lowell
630 lucas
631 lucia
632 lucille
633 lucinda
634 lucy
635 luis
636 luke
637 lula
638 lupe
639 luther
640 luz
641 lydia
642 lyle
643 lynda
644 lynette
645 lynn
646 lynne
647 mabel
648 mable
649 mack
650 madeline
651 mae
652 maggie
653 malcolm
654 mamie
655 mandy
656 manuel
657 marc
658 marcella
659 marcia
660 marco
661 marcos
662 marcus
663 margaret
664 margarita
665 margie
666 marguerite
667 maria
668 marian
669 marianne
670 marie
671 marilyn
672 marina
673 mario
674 marion
675 marissa
676 marjorie
677 mark
678 marla
679 marlene
680 marsha
681 marshall
682 marta
683 martha
684 martin
685 marty
686 marvin
687 mary
688 maryann
689 mathew
690 matt
691 matthew
692 mattie
693 maude
694 maureen
695 maurice
696 max
697 maxine
698 may
699 megan
700 meghan
701 melanie
702 melba
703 melinda
704 melissa
705 melody
706 melvin
707 mercedes
708 meredith
709 merle
710 michael
711 micheal
712 michele
713 michelle
714 miguel
715 mike
716 mildred
717 milton
718 mindy
719 minnie
720 miranda
721 miriam
722 misty
723 mitchell
724 molly
725 mona
726 monica
727 monique
728 morgan
729 morris
730 muriel
731 myra
732 myrna
733 myron
734 myrtle
735 nadine
736 nancy
737 naomi
738 natalie
739 natasha
740 nathan
741 nathaniel
742 neal
743 neil
744 nellie
745 nelson
746 nettie
747 nicholas
748 nichole
749 nick
750 nicolas
751 nicole
752 nikki
753 nina
754 noah
755 noel
756 nora
757 norma
758 norman
759 olga
760 olive
761 oliver
762 olivia
763 ollie
764 omar
765 opal
766 ora
767 orlando
768 orville
769 oscar
770 otis
771 owen
772 pablo
773 pam
774 pamela
775 pat
776 patrice
777 patricia
778 patrick
779 patsy
780 patti
781 patty
782 paul
783 paula
784 paulette
785 pauline
786 pearl
787 pedro
788 peggy
789 penny
790 perry
791 pete
792 peter
793 philip
794 phillip
795 phyllis
796 polly
797 preston
798 priscilla
799 rachael
800 rachel
801 rafael
802 ralph
803 ramiro
804 ramon
805 ramona
806 randall
807 randolph
808 randy
809 raquel
810 raul
811 ray
812 raymond
813 reba
814 rebecca
815 rebekah
816 regina
817 reginald
818 rena
819 rene
820 renee
821 rex
822 rhonda
823 ricardo
824 richard
825 rick
826 rickey
827 ricky
828 rita
829 robbie
830 robert
831 roberta
832 roberto
833 robin
834 robyn
835 rochelle
836 roderick
837 rodney
838 rodolfo
839 rogelio
840 roger
841 roland
842 ron
843 ronald
844 ronda
845 ronnie
846 roosevelt
847 rosa
848 rosalie
849 rosario
850 rose
851 rosemarie
852 rosemary
853 rosetta
854 rosie
855 ross
856 roxanne
857 roy
858 ruben
859 ruby
860 rudolph
861 rudy
862 rufus
863 russell
864 ruth
865 ryan
866 sabrina
867 sadie
868 sallie
869 sally
870 salvador
871 salvatore
872 sam
873 samantha
874 sammy
875 samuel
876 sandra
877 sandy
878 santiago
879 santos
880 sara
881 sarah
882 scott
883 sean
884 sergio
885 seth
886 shane
887 shannon
888 shari
889 sharon
890 shaun
891 shawn
892 shawna
893 sheila
894 shelby
895 sheldon
896 shelia
897 shelley
898 shelly
899 sheri
900 sherman
901 sherri
902 sherrie
903 sherry
904 sheryl
905 shirley
906 sidney
907 silvia
908 simon
909 sonia
910 sonja
911 sonya
912 sophia
913 sophie
914 spencer
915 stacey
916 stacie
917 stacy
918 stanley
919 stella
920 stephanie
921 stephen
922 steve
923 steven
924 stewart
925 stuart
926 sue
927 susan
928 susie
929 suzanne
930 sylvester
931 sylvia
932 tabitha
933 tamara
934 tami
935 tamika
936 tammie
937 tammy
938 tanya
939 tara
940 tasha
941 taylor
942 ted
943 terence
944 teresa
945 teri
946 terrance
947 terrence
948 terri
949 terry
950 thelma
951 theodore
952 theresa
953 therese
954 thomas
955 tiffany
956 tim
957 timothy
958 tina
959 toby
960 todd
961 tom
962 tomas
963 tommie
964 tommy
965 toni
966 tony
967 tonya
968 tracey
969 traci
970 tracie
971 tracy
972 travis
973 trevor
974 tricia
975 trina
976 trisha
977 troy
978 tyler
979 tyrone
980 valerie
981 van
982 vanessa
983 velma
984 vera
985 verna
986 vernon
987 veronica
988 vicki
989 vickie
990 vicky
991 victor
992 victoria
993 vincent
994 viola
995 violet
996 virgil
997 virginia
998 vivian
999 wade
1000 wallace
1001 walter
1002 wanda
1003 warren
1004 wayne
1005 wendell
1006 wendy
1007 wesley
1008 whitney
1009 wilbert
1010 wilbur
1011 wilfred
1012 willard
1013 william
1014 willie
1015 willis
1016 wilma
1017 wilson
1018 winifred
1019 wm
1020 woodrow
1021 yolanda
1022 yvette
1023 yvonne
1024 zachary
diff --git a/1c988769-68cd-42e9-a58b-7beecb65cdfd/lib/process.lua b/1c988769-68cd-42e9-a58b-7beecb65cdfd/lib/process.lua
index 3ed63c4..9f8df3c 100644
a/1c988769-68cd-42e9-a58b-7beecb65cdfd/lib/process.lua
b/1c988769-68cd-42e9-a58b-7beecb65cdfd/lib/process.lua
5 5 local running = setmetatable({}, {__mode="k"})
6 6 local coroutine_create = coroutine.create
7 7
8 local function newName()
9 local f, reason = io.open('/etc/procnames.txt')
10 if not f then
11 error(reason)
12 end
13 local extant = {}
14 for _, proc in pairs(running) do
15 extant[proc.name] = true
16 end
17 local lineno = 1
18 local ret
19 while true do
20 local line = f:read()
21 if not line then
22 break
23 end
24 if not extant[line] then
25 if math.random(lineno) == 1 then
26 ret = line
27 end
28 lineno = lineno + 1
29 end
30 end
31 if not ret then
32 error('no process names available')
33 end
34 return ret
35 end
36
37 local function processForUserConsumption(self)
38 local ret = {
39 path = self.path,
40 env = self.env,
41 command = self.command,
42 data = self.data,
43 name = self.name,
44 }
45 if self.parent then
46 ret.parent = self.parent.name
47 end
48 return ret
49 end
50
51 local function addProcess(co, parent, path, command, env)
52 local data = {}
53 if parent then
54 data = setmetatable(data, {__index=parent.data})
55 end
56 running[co] = {
57 path = path,
58 command = command,
59 env = env,
60 parent = parent,
61 data = data,
62 instances = setmetatable({}, {__mode="v"}),
63 name = newName(),
64 userConsumable = processForUserConsumption,
65 }
66 return co
67 end
68
8 69 local function findProcess(co)
9 70 co = co or coroutine.running()
10 71 for main, process in pairs(running) do
65 126 end
66 127 return code(...)
67 128 end)
68 running[thread] = {
69 path = path,
70 command = name,
71 env = env,
72 data = setmetatable({}, {__index=process and process.data or nil}),
73 parent = process,
74 instances = setmetatable({}, {__mode="v"})
75 }
129 addProcess(thread, process, path, name, env)
76 130 return thread
77 131 end
78 132
133 function process.spawn(f, env, name, path)
134 checkArg(1, f, "function")
135 checkArg(2, env, "table", "nil")
136 checkArg(3, name, "string", "nil")
137 checkArg(4, path, "string", "nil")
138
139 local process = findProcess()
140 if process then
141 env = env or process.env
142 end
143 if not path then
144 path = '<function>'
145 end
146 env = setmetatable({}, {__index=env or _G})
147 return addProcess(coroutine_create(f), process, path, name, env)
148 end
149
79 150 function process.running(level) -- kept for backwards compat, prefer process.info
80 151 local info = process.info(level)
81 152 if info then
96 167 end
97 168 end
98 169 if process then
99 return {path=process.path, env=process.env, command=process.command, data=process.data}
170 return process:userConsumable()
100 171 end
101 172 end
102 173
174 function process.list()
175 local ret = {n = 0}
176 for _, proc in pairs(running) do
177 ret.n = ret.n + 1
178 ret[ret.n] = proc:userConsumable()
179 end
180 return ret
181 end
182
103 183 function process.install(path, name)
104 184 _G.coroutine.create = function(f)
105 185 local co = coroutine_create(f)
111 191 env = env or select(2, process.running())
112 192 return load(ld, source, mode, env)
113 193 end
114 local thread = coroutine.running()
115 running[thread] = {
116 path = path,
117 command = name,
118 env = _ENV,
119 data = {},
120 instances = setmetatable({}, {__mode="v"})
121 }
194 addProcess(coroutine.running(), nil, path, name, _ENV)
122 195 end
123 196
124 return process
125 197 No newline at end of file