mkrootc 717 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. #!/bin/rc
  2. rfork e
  3. n=`{echo $#*^'%3' | hoc}
  4. if(! ~ $n 0){
  5. echo 'usage: mkrootc [name cname file]...' >[1=2]
  6. exit usage
  7. }
  8. tmp=mkroot.$pid.out
  9. fn sigexit {
  10. rm -f $tmp
  11. }
  12. allcname=()
  13. allname=()
  14. while(! ~ $#* 0){
  15. name=$1
  16. cname=$2
  17. file=$3
  18. shift
  19. shift
  20. shift
  21. allname=($allname $name)
  22. allcname=($allcname $cname)
  23. }
  24. echo '
  25. #include "u.h"
  26. #include "../port/lib.h"
  27. #include "mem.h"
  28. #include "dat.h"
  29. #include "fns.h"
  30. #include "io.h"
  31. #include "../port/error.h"
  32. '
  33. for(i in $allcname){
  34. echo 'extern uchar '$i'code[];'
  35. echo 'extern ulong '$i'len;'
  36. }
  37. echo '
  38. void bootlinks(void){
  39. '
  40. x=($allname)
  41. for(i in $allcname){
  42. name=$x(1)
  43. *=($x); shift; x=($*)
  44. echo ' addbootfile("'$name'", '$i'code, '$i'len);'
  45. }
  46. echo '
  47. }
  48. '