Bladeren bron

remove python scripts duplicates in Xtras and rename Xtras/Net/defs-fd_set-* files to follow Filename == ident [ - ident ] { …

Ivan Denisov 3 jaren geleden
bovenliggende
commit
0319b4d24a
59 gewijzigde bestanden met toevoegingen van 567 en 1066 verwijderingen
  1. 1 0
      Fbsd/Xtras/Ioctl/Ioctl.txt.templ
  2. 1 0
      Fbsd/Xtras/Ioctl/dumpdefs.py
  3. 1 0
      Fbsd/Xtras/Ioctl/txt2odc.py
  4. 1 0
      Fbsd/Xtras/Ioctl/untempl.py
  5. 1 1
      Fbsd/Xtras/LibW/dumpdefs.py
  6. 1 1
      Fbsd/Xtras/LibW/txt2odc.py
  7. 1 1
      Fbsd/Xtras/LibW/untempl.py
  8. 1 0
      Fbsd/Xtras/Libc/Libc.txt.templ
  9. 1 1
      Fbsd/Xtras/Libc/dumpdefs.py
  10. 1 1
      Fbsd/Xtras/Libc/txt2odc.py
  11. 1 1
      Fbsd/Xtras/Libc/untempl.py
  12. 1 1
      Fbsd/Xtras/Net/Makefile
  13. 1 0
      Fbsd/Xtras/Net/Net.txt.templ
  14. 0 0
      Fbsd/Xtras/Net/defs-fd_set_const
  15. 0 0
      Fbsd/Xtras/Net/defs-fd_set_type
  16. 1 1
      Fbsd/Xtras/Net/dumpdefs.py
  17. 1 1
      Fbsd/Xtras/Net/txt2odc.py
  18. 1 1
      Fbsd/Xtras/Net/untempl.py
  19. 0 155
      Fbsd/Xtras/dumpdefs.py
  20. 0 86
      Fbsd/Xtras/txt2odc.py
  21. 0 39
      Fbsd/Xtras/untempl.py
  22. 0 14
      Lin/Xtras/Ioctl/Ioctl.txt.templ
  23. 1 0
      Lin/Xtras/Ioctl/Ioctl.txt.templ
  24. 1 1
      Lin/Xtras/Ioctl/dumpdefs.py
  25. 1 1
      Lin/Xtras/Ioctl/txt2odc.py
  26. 1 1
      Lin/Xtras/Ioctl/untempl.py
  27. 0 47
      Lin/Xtras/LibW/LibW.txt.templ
  28. 1 0
      Lin/Xtras/LibW/LibW.txt.templ
  29. 1 1
      Lin/Xtras/LibW/dumpdefs.py
  30. 1 1
      Lin/Xtras/LibW/txt2odc.py
  31. 1 1
      Lin/Xtras/LibW/untempl.py
  32. 0 278
      Lin/Xtras/Libc/Libc.txt.templ
  33. 1 0
      Lin/Xtras/Libc/Libc.txt.templ
  34. 1 1
      Lin/Xtras/Libc/dumpdefs.py
  35. 33 0
      Lin/Xtras/Libc/mkdumpstrerrno.py
  36. 18 0
      Lin/Xtras/Libc/mkstrerrnocase.py
  37. 1 1
      Lin/Xtras/Libc/txt2odc.py
  38. 1 1
      Lin/Xtras/Libc/untempl.py
  39. 1 1
      Lin/Xtras/Net/Makefile
  40. 0 140
      Lin/Xtras/Net/Net.txt.templ
  41. 1 0
      Lin/Xtras/Net/Net.txt.templ
  42. 0 0
      Lin/Xtras/Net/defs-fd_set_const
  43. 0 0
      Lin/Xtras/Net/defs-fd_set_type
  44. 1 1
      Lin/Xtras/Net/dumpdefs.py
  45. 1 1
      Lin/Xtras/Net/txt2odc.py
  46. 1 1
      Lin/Xtras/Net/untempl.py
  47. 1 1
      Lin/Xtras/Termios/dumpdefs.py
  48. 1 1
      Lin/Xtras/Termios/txt2odc.py
  49. 1 1
      Lin/Xtras/Termios/untempl.py
  50. 0 155
      Lin/Xtras/dumpdefs.py
  51. 0 86
      Lin/Xtras/txt2odc.py
  52. 0 39
      Lin/Xtras/untempl.py
  53. 14 0
      Obsd/Xtras/Ioctl/Ioctl.txt.templ
  54. 47 0
      Obsd/Xtras/LibW/LibW.txt.templ
  55. 278 0
      Obsd/Xtras/Libc/Libc.txt.templ
  56. 1 1
      Obsd/Xtras/Net/Makefile
  57. 140 0
      Obsd/Xtras/Net/Net.txt.templ
  58. 0 0
      Obsd/Xtras/Net/defs-fd_set_const
  59. 0 0
      Obsd/Xtras/Net/defs-fd_set_type

+ 1 - 0
Fbsd/Xtras/Ioctl/Ioctl.txt.templ

@@ -0,0 +1 @@
+../../../Obsd/Xtras/Ioctl/Ioctl.txt.templ

+ 1 - 0
Fbsd/Xtras/Ioctl/dumpdefs.py

@@ -0,0 +1 @@
+../../../Obsd/Xtras/dumpdefs.py

+ 1 - 0
Fbsd/Xtras/Ioctl/txt2odc.py

@@ -0,0 +1 @@
+../../../Obsd/Xtras/txt2odc.py

+ 1 - 0
Fbsd/Xtras/Ioctl/untempl.py

@@ -0,0 +1 @@
+../../../Obsd/Xtras/untempl.py

+ 1 - 1
Fbsd/Xtras/LibW/dumpdefs.py

@@ -1 +1 @@
-../dumpdefs.py
+../../../Obsd/Xtras/dumpdefs.py

+ 1 - 1
Fbsd/Xtras/LibW/txt2odc.py

@@ -1 +1 @@
-../txt2odc.py
+../../../Obsd/Xtras/txt2odc.py

+ 1 - 1
Fbsd/Xtras/LibW/untempl.py

@@ -1 +1 @@
-../untempl.py
+../../../Obsd/Xtras/untempl.py

+ 1 - 0
Fbsd/Xtras/Libc/Libc.txt.templ

@@ -0,0 +1 @@
+../../../Obsd/Xtras/Libc/Libc.txt.templ

+ 1 - 1
Fbsd/Xtras/Libc/dumpdefs.py

@@ -1 +1 @@
-../dumpdefs.py
+../../../Obsd/Xtras/dumpdefs.py

+ 1 - 1
Fbsd/Xtras/Libc/txt2odc.py

@@ -1 +1 @@
-../txt2odc.py
+../../../Obsd/Xtras/txt2odc.py

+ 1 - 1
Fbsd/Xtras/Libc/untempl.py

@@ -1 +1 @@
-../untempl.py
+../../../Obsd/Xtras/untempl.py

+ 1 - 1
Fbsd/Xtras/Net/Makefile

@@ -15,7 +15,7 @@ all: Net.odc ${DEFS}
 Net.odc: Net.txt
 	./txt2odc.py Net.txt Net.odc
 
-Net.txt: Net.txt.templ ${DEFS} libver osname machine fields-sockaddr fields-sockaddr_in fields-sockaddr_storage fields-addrinfo defs-fd_set-const defs-fd_set-type
+Net.txt: Net.txt.templ ${DEFS} libver osname machine fields-sockaddr fields-sockaddr_in fields-sockaddr_storage fields-addrinfo defs-fd_set_const defs-fd_set_type
 	${PY} ./untempl.py Net.txt.templ ${.TARGET}
 
 defs-basictypes: sizeofs

+ 1 - 0
Fbsd/Xtras/Net/Net.txt.templ

@@ -0,0 +1 @@
+../../../Obsd/Xtras/Net/Net.txt.templ

+ 0 - 0
Fbsd/Xtras/Net/defs-fd_set-const → Fbsd/Xtras/Net/defs-fd_set_const


+ 0 - 0
Fbsd/Xtras/Net/defs-fd_set-type → Fbsd/Xtras/Net/defs-fd_set_type


+ 1 - 1
Fbsd/Xtras/Net/dumpdefs.py

@@ -1 +1 @@
-../dumpdefs.py
+../../../Obsd/Xtras/dumpdefs.py

+ 1 - 1
Fbsd/Xtras/Net/txt2odc.py

@@ -1 +1 @@
-../txt2odc.py
+../../../Obsd/Xtras/txt2odc.py

+ 1 - 1
Fbsd/Xtras/Net/untempl.py

@@ -1 +1 @@
-../untempl.py
+../../../Obsd/Xtras/untempl.py

+ 0 - 155
Fbsd/Xtras/dumpdefs.py

@@ -1,155 +0,0 @@
-#! /usr/bin/env python2.7
-#
-# A. V. Shiryaev, 2012.09, 2016.11
-# simple *.h '#define' macro translator
-
-import sys, re
-
-INDENT = "\t"
-
-_p1 = re.compile('^#\s*define\s+([^\s]+)\s+([A-Za-z0-9]+)\s*$')
-_p2 = re.compile('^#\s*define\s+([^\s]+)\s+([^\s]+)\s+\/\*([^\*]+)\*\/\s*$')
-
-def mkset (x):
-	if x >= 0:
-		s = []
-		ss = 0
-		i = 0
-		while x != 0:
-			if x % 2 != 0:
-				if ss == 0:
-					si = i
-					sn = 1
-					ss = 1
-				elif i == si + sn:
-					sn = sn + 1
-				else:
-					if sn == 1:
-						s.append(str(si))
-					elif sn == 2:
-						s.append("%s,%s" % (si, si+1))
-					else:
-						s.append("%s..%s" % (si, si + sn - 1))
-					si = i
-					sn = 1
-			i = i + 1
-			x = x / 2
-		if ss == 1:
-			if sn == 1:
-				s.append(str(si))
-			elif sn == 2:
-				s.append("%s,%s" % (si, si+1))
-			else:
-				s.append("%s..%s" % (si, si + sn - 1))
-		return '{' + ','.join(s) + '}'
-	else:
-		return None
-
-def fixVal (x, tip):
-	if x.startswith('(') and x.endswith(')') and (x.count('(') == 1) and (x.count(')') == 1):
-		x = x[1:-1]
-
-	if x.startswith('0x'): # fix HEX
-		if tip == 'i':
-			if x[2] in ('0', '1', '2', '3', '4', '5', '6', '7', '8', '9'):
-				return x[2:].upper() + "H"
-			else:
-				return "0" + x[2:].upper() + "H"
-		elif tip == 's':
-			return mkset(int(x, 16))
-		elif tip == 'c':
-			if x[2] in ('0', '1', '2', '3', '4', '5', '6', '7', '8', '9'):
-				return x[2:].upper() + "X"
-			else:
-				return "0" + x[2:].upper() + "X"
-		else:
-			assert False
-	elif x[0] == '0': # fix OCT
-		if tip == 'i':
-			return str(int(x, 8))
-		elif tip == 's':
-			return mkset(int(x, 8))
-		elif tip == 'c':
-			return fixVal("0x%x" % (int(x, 8),), tip)
-		else:
-			assert False
-	else:
-		if tip == 'i':
-			return x
-		else:
-			try:
-				y = int(x)
-			except:
-				return x
-			else:
-				if tip == 's':
-					return mkset(y)
-				elif tip == 'c':
-					return fixVal("0x%x" % (int(y),), tip)
-				else:
-					assert False
-
-def p (nIndents, sym, val, comment, val1):
-	r = [ "%s%s* = %s;" % (INDENT*nIndents, sym, val) ]
-	if (val1 != None) and (val != val1):
-		r.append( "(* %s *)" % (val1,) )
-	if comment:
-		r.append( "(* %s *)" % (comment,) )
-	print ' '.join(r)
-
-def isBits (s):
-	return (len(s) > 1) and s.startswith('0') # HEX or OCT
-
-def main ():
-	if len(sys.argv) == 5:
-		nIndents = int(sys.argv[1])
-		if sys.argv[2] == '*':
-			level = None
-		else:
-			level = int(sys.argv[2])
-		tip = sys.argv[3]
-		assert tip in ('i', 's', 'c')
-
-		fh = open(sys.argv[4], 'r')
-		st = 0
-		for line in fh.readlines():
-			if line.startswith("#if"):
-				# print line,
-				st = st + 1
-			elif line.startswith("#endif"):
-				# print line,
-				st = st - 1
-			elif (level == None) or (st == level):
-				r = _p2.match(line)
-				if r:
-					sym = r.group(1)
-					val = fixVal(r.group(2), tip)
-					if isBits(r.group(2)):
-						val1 = fixVal(r.group(2), 's')
-					else:
-						val1 = None
-					comment = r.group(3).strip()
-					p(nIndents, sym, val, comment, val1)
-				else:
-					r = _p1.match(line)
-					if r:
-						sym = r.group(1)
-						val = fixVal(r.group(2), tip)
-						if isBits(r.group(2)):
-							val1 = fixVal(r.group(2), 's')
-						else:
-							val1 = None
-						comment = None
-						p(nIndents, sym, val, comment, val1)
-	else:
-		print "usage: %s nIndents level type file.h" % (sys.argv[0],)
-		print "	level:"
-		print "		number: selected level"
-		print "		*: all levels"
-		print "	type:"
-		print "		i: integer"
-		print "		s: set"
-		print "		c: shortchar"
-
-if __name__ == '__main__':
-	main()

+ 0 - 86
Fbsd/Xtras/txt2odc.py

@@ -1,86 +0,0 @@
-#! /usr/bin/env python2.7
-# -*- coding: utf-8 -*-
-#
-# Alexander Shiryaev, 2020.01
-#
-# Documents.ExportDocument
-#
-# ASCII only
-
-import sys, re
-
-def Int (x):
-	assert x >= 0
-	assert x < 0x100000000
-	return chr(x % 0x100) + chr((x >> 8) % 0x100) + chr((x >> 16) % 0x100) + chr((x >> 24) % 0x100)
-
-hdr0 = "CDOo" + Int(0) + \
-	"\x82\xf1" + "Documents.StdDocumentDesc" + \
-	"\x00\xf1" + "Documents.DocumentDesc" + \
-	"\x00\xf1" + "Containers.ViewDesc" + \
-	"\x00\xf1" + "Views.ViewDesc" + \
-	"\x00\xf0" + "Stores.StoreDesc" + \
-	"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00"
-
-hdr1 = "\x00\x00\x00\x83\xf1" + "Documents.ModelDesc" + \
-	"\x00\xf1" + "Containers.ModelDesc" + \
-	"\x00\xf1" + "Models.ModelDesc" + \
-	"\x00\xf1" + "Stores.ElemDesc" + \
-	"\x00\xf2\x04\x00\x00\x00\x00\x00\x00\x00"
-
-hdr2 = "\x09\x00\x00\x00"
-
-hdr3 = "\x00\x00\x00\x00\x00\x82\xf1" + "TextViews.StdViewDesc" + \
-	"\x00\xf1" + "TextViews.ViewDesc" + \
-	"\x00\xf2\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00"
-
-hdr4 = "\x00\x00\x00\x83\xf1" + "TextModels.StdModelDesc" + \
-	"\x00\xf1" + "TextModels.ModelDesc" + \
-	"\x00\xf2\x06\x00\x00\x00\x00\x00\x00\x00"
-
-hdr5 = "\x0f\x00\x00\x00"
-
-hdr6 = "\x00\x00\x00\x00\x00\x00\x51\x00\x00\x00\x00\x82\xf1" + "TextModels.AttributesDesc" + \
-	"\x00\xf2\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1a\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x2a\x00\x18\xf0\x01\x00\x00\x00\x00\x00\x90\x01\x00\x00\x00\x00"
-
-hdr7 = "\xff"
-
-trl = "\x82\xf1" + "TextControllers.StdCtrlDesc" + \
-	"\x00\xf1" + "TextControllers.ControllerDesc" + \
-	"\x00\xf1" + "Containers.ControllerDesc" + \
-	"\x00\xf1" + "Controllers.ControllerDesc" + \
-	"\x00\xf2\x04\x00\x00\x00\x00\x00\x00\x00\x14\x00\x00\x00\x00\x00\x00\x00\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x82\xf1" + "TextRulers.StdRulerDesc" + \
-	"\x00\xf1" + "TextRulers.RulerDesc" + \
-	"\x00\xf2\x03\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x07\x00\x00\x00\xa3\x00\x00\x00\x00\x00\x00\x83\xf1" + "TextRulers.StdStyleDesc" + \
-	"\x00\xf1" + "TextRulers.StyleDesc" + \
-	"\x00\xf2\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x5a\x00\x00\x00\x00\x00\x00\x00\x82\xf1" + "TextRulers.AttributesDesc" + \
-	"\x00\xf2\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x20\xa3\x5a\x00\x00\x00\x00\x00\xbb\xf2\x01\x00\x2c\x68\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x82\xf2\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1a\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x2a\x00\x18\xf0\x01\x00\x00\x00\x00\x00\x90\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0c\xf8\x00\x00\x0c\xf8\x00\x00\x2c\x9b\x5b\x00\x0b\xf8\x00\x40\x82\xf1" + "Documents.ControllerDesc" + \
-	"\x00\xf2\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x09\x00\x00\x00\x00\x40\x5b\x73\x00\x00\x99\xa2\x00\x80\xfc\x0a\x00\x80\xfc\x0a\x00\xc0\x5e\x68\x00\x80\x9c\x97\x00\x00"
-
-def splitToLines (text):
-	lines = []
-	[ [ lines.append(l1) for l1 in re.split( '[\r\n]', l ) ] for l in text.split('\r\n') ]
-	return lines
-
-def txt2odc (text):
-	# text = text.replace('\n', chr(0x0d))
-	text = chr(0x0d).join(splitToLines(text))
-
-	l = len(text)
-
-	return hdr0 + Int(l + 873) + hdr1 + Int(l + 695) + hdr2 + Int(l + 687) + hdr3 + Int(l + 601) + hdr4 + Int(l + 99) + hdr5 + Int(l + 91) + hdr6 + Int(l) + hdr7 + text + trl
-
-def main ():
-	if len(sys.argv) == 3:
-		fh = open(sys.argv[1], 'rb')
-		text = fh.read()
-		fh.close()
-
-		fh = open(sys.argv[2], 'wb')
-		fh.write(txt2odc(text))
-		fh.close()
-	else:
-		print("usage: %s file.txt file.odc" % (sys.argv[0],))
-
-if __name__ == '__main__':
-	main()

+ 0 - 39
Fbsd/Xtras/untempl.py

@@ -1,39 +0,0 @@
-#! /usr/bin/env python2.7
-
-import sys, re
-
-def readFile (fileName):
-	fh = open(fileName, 'rb')
-	x = fh.read()
-	fh.close()
-	return x
-
-def writeFile (fileName, x):
-	fh = open(fileName, 'wb')
-	fh.write(x)
-	fh.close()
-
-_p = re.compile('\%\%([^\%]+)\%\%')
-
-def untempl (x):
-	while True:
-		r = _p.search(x)
-		if r:
-			fileName = r.group(1)
-			y = readFile(fileName)
-			toRepl = "%%%%%s%%%%" % (fileName,)
-			x = x.replace(toRepl, y)
-		else:
-			break
-	return x
-
-def main ():
-	if len(sys.argv) != 3:
-		print "usage: %s oldfile newfile" % (sys.argv[0],)
-	else:
-		old = readFile(sys.argv[1])
-		new = untempl(old)
-		writeFile(sys.argv[2], new)
-
-if __name__ == '__main__':
-	main()

+ 0 - 14
Lin/Xtras/Ioctl/Ioctl.txt.templ

@@ -1,14 +0,0 @@
-MODULE LinIoctl ["libc.so%%libver%%"];
-
-	(*
-		%%osname%%
-		%%machine%%
-	*)
-
-	CONST
-%%defs-tiocm%%
-%%defs-ioctl%%
-	PROCEDURE [ccall] ioctl0* ["ioctl"] (d: INTEGER; req: INTEGER): INTEGER;
-	PROCEDURE [ccall] ioctl1* ["ioctl"] (d: INTEGER; req: INTEGER; VAR arg: INTEGER): INTEGER;
-
-END LinIoctl.

+ 1 - 0
Lin/Xtras/Ioctl/Ioctl.txt.templ

@@ -0,0 +1 @@
+../../../Obsd/Xtras/Ioctl/Ioctl.txt.templ

+ 1 - 1
Lin/Xtras/Ioctl/dumpdefs.py

@@ -1 +1 @@
-../dumpdefs.py
+../../../Obsd/Xtras/dumpdefs.py

+ 1 - 1
Lin/Xtras/Ioctl/txt2odc.py

@@ -1 +1 @@
-../txt2odc.py
+../../../Obsd/Xtras/txt2odc.py

+ 1 - 1
Lin/Xtras/Ioctl/untempl.py

@@ -1 +1 @@
-../untempl.py
+../../../Obsd/Xtras/untempl.py

+ 0 - 47
Lin/Xtras/LibW/LibW.txt.templ

@@ -1,47 +0,0 @@
-MODULE LinLibW ["libc.so%%libver%%"];
-
-	(*
-		%%osname%%
-		%%machine%%
-	*)
-
-	IMPORT Libc := LinLibc;
-
-	CONST
-%%defs-lc%%
-	TYPE
-		(* int, wchar_t, wint_t, size_t, mbstate_t *)
-%%defs-basictypes%%
-		PtrWSTR* = POINTER [untagged] TO ARRAY [untagged] OF wchar_t;
-
-	PROCEDURE [ccall] setlocale* (category: int; locale: Libc.PtrSTR): Libc.PtrSTR;
-
-	PROCEDURE [ccall] mbsinit* (VAR [nil] ps: mbstate_t): int;
-
-	PROCEDURE [ccall] wctomb* (s: Libc.PtrSTR; wchar: wchar_t): int;
-	PROCEDURE [ccall] wcstombs* (s: Libc.PtrSTR; pwcs: PtrWSTR; n: size_t): size_t;
-
-	PROCEDURE [ccall] wcrtomb* (s: Libc.PtrSTR; wc: wchar_t; VAR [nil] ps: mbstate_t): size_t;
-	PROCEDURE [ccall] wcsrtombs* (dst: Libc.PtrSTR; VAR src: PtrWSTR; len: size_t; VAR [nil] ps: mbstate_t): size_t;
-	PROCEDURE [ccall] wcsnrtombs* (dst: Libc.PtrSTR; VAR src: PtrWSTR; nwc: size_t; len: size_t; VAR [nil] ps: mbstate_t): size_t;
-
-	PROCEDURE [ccall] mbtowc* (pwc: PtrWSTR; s: Libc.PtrSTR; n: size_t): int;
-	PROCEDURE [ccall] mbstowcs* (pwcs: PtrWSTR; s: Libc.PtrSTR; n: size_t): size_t;
-	PROCEDURE [ccall] mblen* (s: Libc.PtrSTR; n: size_t): int;
-
-	PROCEDURE [ccall] mbrtowc* (wc: PtrWSTR; s: Libc.PtrSTR; n: size_t; VAR [nil] mbs: mbstate_t): size_t;
-	PROCEDURE [ccall] mbsrtowcs* (dst: PtrWSTR; VAR src: Libc.PtrSTR; len: size_t; VAR [nil] ps:  mbstate_t): size_t;
-	PROCEDURE [ccall] mbsnrtowcs* (dst: PtrWSTR; VAR src: Libc.PtrSTR; nmc: size_t; len: size_t; VAR [nil] ps: mbstate_t): size_t;
-	PROCEDURE [ccall] mbrlen* (s: Libc.PtrSTR; n: size_t; VAR [nil] ps: mbstate_t): size_t;
-
-	PROCEDURE [ccall] iswalpha* (wc: wint_t): int;
-	PROCEDURE [ccall] iswlower* (wc: wint_t): int;
-	PROCEDURE [ccall] iswupper* (wc: wint_t): int;
-	PROCEDURE [ccall] towlower* (wc: wint_t): wint_t;
-	PROCEDURE [ccall] towupper* (wc: wint_t): wint_t;
-
-	PROCEDURE [ccall] wprintf* (fmt: PtrWSTR): int;
-	PROCEDURE [ccall] fputws* (ws: PtrWSTR; fp: Libc.PtrFILE): int;
-	PROCEDURE [ccall] fgetws* (ws: PtrWSTR; n: int; fp: Libc.PtrFILE): PtrWSTR;
-
-END LinLibW.

+ 1 - 0
Lin/Xtras/LibW/LibW.txt.templ

@@ -0,0 +1 @@
+../../../Obsd/Xtras/LibW/LibW.txt.templ

+ 1 - 1
Lin/Xtras/LibW/dumpdefs.py

@@ -1 +1 @@
-../dumpdefs.py
+../../../Obsd/Xtras/dumpdefs.py

+ 1 - 1
Lin/Xtras/LibW/txt2odc.py

@@ -1 +1 @@
-../txt2odc.py
+../../../Obsd/Xtras/txt2odc.py

+ 1 - 1
Lin/Xtras/LibW/untempl.py

@@ -1 +1 @@
-../untempl.py
+../../../Obsd/Xtras/untempl.py

+ 0 - 278
Lin/Xtras/Libc/Libc.txt.templ

@@ -1,278 +0,0 @@
-MODULE LinLibc ["libc.so%%libver%%"];
-
-	(*
-		%%osname%%
-		%%machine%%
-	*)
-
-	CONST
-		NULL* = 0H;
-		FALSE* = 0;
-		TRUE* = 1;
-
-		CLOCKS_PER_SEC* = %%clockspersec%%;
-
-		MAP_FAILED* = -1;
-
-		(* MAP_PRIVATE, MAP_ANON (intFlags) *)
-%%defs-map%%
-
-		(* PROT_READ, PROT_WRITE, PROT_EXEC (intFlags) *)
-%%defs-prot%%
-
-		(* SIG_UNBLOCK, SIG_SETMASK (int) *)
-%%defs-sigmask%%
-
-		(* FPE_INTDIV, FPE_INTOVF, FPE_FLTDIV, FPE_FLTOVF, FPE_FLTUND, FPE_FLTRES, FPE_FLTINV, FPE_FLTSUB (int) *)
-%%defs-fpe%%
-
-		(* SA_SIGINFO (intFlags) *)
-%%defs-sa%%
-
-		(* SIGINT, SIGILL, SIGFPE, SIGSEGV, SIGKILL, SIGSTOP, SIGWINCH, SIGTHR (int) *)
-%%defs-signo%%
-		_NSIG* = %%nsig%%;
-
-		(* SIG_DFL, SIG_IGN, SIG_ERR *)
-%%defs-sig%%
-
-(*
-		PAGE_SIZE* = 4096;
-*)
-%%defs-sc%%
-
-		SIGSTKSZ* = %%sigstksz%%;
-
-		(* ENOENT, EEXIST, EACCES, ENOMEM, EDQUOT, EMFILE, ENOTDIR (int) *)
-%%defs-errno%%
-
-%%defs-wait%%
-
-		NAME_MAX* = %%namemax%%;
-
-		SEEK_SET* = 0;
-		SEEK_CUR* = 1;
-		SEEK_END* = 2;
-
-		STDIN_FILENO* = 0;
-		STDOUT_FILENO* = 1;
-		STDERR_FILENO* = 2;
-
-		P_tmpdir* = "/tmp";
-
-		(* O_RDWR, O_NONBLOCK (intFlags) *)
-%%defs-fcntlo%%
-
-%%defs-clockid%%
-
-%%defs-rlimit%%
-
-%%defs-utime%%
-
-	TYPE
-		StrArray* = POINTER TO ARRAY [untagged] OF PtrSTR;
-		PtrSTR* = POINTER TO ARRAY [untagged] OF SHORTCHAR;
-
-		(* PtrVoid, int, long, size_t, ssize_t, off_t, time_t, clock_t, sigjmp_buf *)
-		(* mode_t, rlim_t, intFlags, sigset_t (set) *)
-%%defs-basictypes%%
-
-		tm* = POINTER TO tmDesc;
-		tmDesc* = RECORD [untagged]
-			(* NOTE: check record size *)
-			(* tm_year, tm_mon, tm_mday, tm_hour, tm_min, tm_sec, tm_wday [ , tm_gmtoff ] *)
-%%fields-tm%%
-		END;
-
-		Ptrsiginfo_t* = POINTER TO siginfo_t;
-		siginfo_t = RECORD [untagged]
-			(* si_code, fault address *)
-%%fields-siginfo%%
-		END;
-
-		Ptrucontext_t* = POINTER TO ucontext_t;
-		ucontext_t = RECORD [untagged]
-			(* IP, SP, FP *)
-%%fields-ucontext%%
-		END;
-
-		sa_sigaction_t* = PROCEDURE [ccall] (sig: int; siginfo: Ptrsiginfo_t; context: Ptrucontext_t);
-		sigaction_t* = RECORD [untagged]
-(*
-			sa_sigaction*: sa_sigaction_t,
-			sa_flags*: intFlags, sa_mask*: sigset_t
-*)
-%%fields-sigaction%%
-		END;
-
-		stack_t* = RECORD [untagged]
-(*
-			ss_sp*: PtrVoid, ss_size*: size_t, ss_flags*: intFlags
-*)
-%%fields-stack%%
-		END;
-
-		stat_t* = RECORD [untagged]
-(*
-			NOTE: check record size
-			st_mode*: mode_t, st_size*: off_t, st_mtime*: time_t
-*)
-%%fields-stat%%
-		END;
-
-		PtrFILE* = PtrVoid;
-		PtrDIR* = PtrVoid;
-
-		PtrDirent* = POINTER TO Dirent;
-		Dirent = RECORD [untagged]
-(*
-			d_name*: ARRAY [untagged] NAME_MAX + 1 OF SHORTCHAR
-*)
-%%fields-dirent%%
-		END;
-
-		timespec_t* = RECORD [untagged]
-%%fields-timespec%%
-		END;
-
-		rlimit* = RECORD [untagged]
-			rlim_cur*, rlim_max*: rlim_t
-		END;
-
-		TVP* = RECORD [untagged] access*, modification*: timespec_t END;
-
-(*
-	VAR
-		stdin*: INTEGER;
-		timezone*: INTEGER; (* or tm.tm_gmtoff *)
-*)
-(*
-	PROCEDURE [ccall] __errno_location* (): PtrVoid;
-*)
-(*
-	(* POSIX.1 *)
-		PROCEDURE [ccall] stat* (path: PtrSTR; VAR sp: stat_t): int;
-*)
-%%custom%%
-
-	(* ANSI C 89 *)
-		PROCEDURE [ccall] clock* (): clock_t;
-
-	(* POSIX.1 *)
-		PROCEDURE [ccall] clock_gettime* (clock_id: clockid_t; VAR tp: timespec_t): int;
-
-	(* AT&T UNIX *)
-		PROCEDURE [ccall] time* (VAR [nil] tloc: time_t): time_t;
-
-	(* AT&T UNIX *)
-		PROCEDURE [ccall] gmtime* (VAR [nil] clock: time_t): tm;
-		PROCEDURE [ccall] localtime* (VAR [nil] clock: time_t): tm;
-		PROCEDURE [ccall] mktime* (VAR tm: tmDesc): time_t;
-
-	PROCEDURE [ccall] mmap* (adr: PtrVoid; len: size_t; prot: intFlags; flags: intFlags; fd: int; offset: off_t): PtrVoid;
-	(* BSD *)
-		PROCEDURE [ccall] munmap* (adr: PtrVoid; len: size_t): int;
-		PROCEDURE [ccall] mprotect* (adr: PtrVoid; len: size_t; prot: intFlags): int;
-
-	PROCEDURE [ccall] calloc* (nmemb: size_t; size: size_t): PtrVoid;
-(*	(* ANSI C 89 *)
-		PROCEDURE [ccall] malloc* (size: size_t): PtrVoid;
-*)
-		PROCEDURE [ccall] free* (ptr: PtrVoid);
-
-
-	(* POSIX.1 *)
-(*
-		PROCEDURE [ccall] sigsetjmp* (VAR env: sigjmp_buf; savemask: int): int;
-*)
-		PROCEDURE [ccall] siglongjmp* (VAR env: sigjmp_buf; val: int);
-
-	(* POSIX.1 *)
-		PROCEDURE [ccall] sigemptyset* (set: PtrSigset_t): int;
-		PROCEDURE [ccall] sigfillset* (set: PtrSigset_t): int;
-		PROCEDURE [ccall] sigaddset* (set: PtrSigset_t; signo: int): int;
-		PROCEDURE [ccall] sigprocmask* (how: int; set: PtrSigset_t; oset: PtrSigset_t): int;
-
-	(* POSIX.1 *)
-		PROCEDURE [ccall] sigaction* (sig: int; VAR [nil] act: sigaction_t; VAR [nil] oact: sigaction_t): int;
-
-	(* BSD *)
-		PROCEDURE [ccall] sigaltstack* (VAR [nil] ss: stack_t; VAR [nil] oss: stack_t): int;
-
-	(* ANSI C 89 *)
-		PROCEDURE [ccall] getenv* (s: PtrSTR): PtrSTR;
-
-	(* ANSI C 89 *)
-		PROCEDURE [ccall] fopen* (path, mode: PtrSTR): PtrFILE;
-		PROCEDURE [ccall] fdopen* (fildes: int; mode: PtrSTR): PtrFILE;
-		PROCEDURE [ccall] fclose* (stream: PtrFILE): int;
-		PROCEDURE [ccall] fread* (ptr: PtrVoid; size: size_t; nmemb: size_t; stream: PtrFILE): size_t;
-		PROCEDURE [ccall] fwrite* (ptr: PtrVoid; size: size_t; nmemb: size_t; stream: PtrFILE): size_t;
-		PROCEDURE [ccall] fflush* (s: PtrFILE): int;
-		PROCEDURE [ccall] printf* (s: PtrSTR): int;
-	(* ANSI C 89, XPG4 *)
-		PROCEDURE [ccall] fseek* (stream: PtrFILE; offset: long; whence: int): int;
-
-	(* POSIX.1 *)
-		PROCEDURE [ccall] fileno* (stream: PtrFILE): int;
-
-	(* POSIX.1 *)
-		PROCEDURE [ccall] rename* (from, to: PtrSTR): int;
-		PROCEDURE [ccall] mkdir* (path: PtrSTR; mode: mode_t): int;
-		PROCEDURE [ccall] opendir* (filename: PtrSTR): PtrDIR;
-		PROCEDURE [ccall] readdir* (dirp: PtrDIR): PtrDirent;
-		PROCEDURE [ccall] closedir* (dirp: PtrDIR): int;
-	(* ANSI C 89, XPG4.2 *)
-		PROCEDURE [ccall] remove* (path: PtrSTR): int;
-		PROCEDURE [ccall] canonicalize_file_name* (path: PtrSTR): PtrSTR;
-
-	(* POSIX.1 *)
-		PROCEDURE [ccall] getcwd* (buf: PtrSTR; size: size_t): PtrSTR;
-
-	(* ANSI C 99 *)
-		PROCEDURE [ccall] exit* (status: int);
-
-	(* ANSI C 89 *)
-		PROCEDURE [ccall] strftime* (buf: PtrSTR; maxsize: size_t; format: PtrSTR; timeptr: tm): size_t;
-
-	(* XXX: use fread instead *)
-		PROCEDURE [ccall] fgets* (str: PtrSTR; size: int; stream: PtrFILE): PtrSTR;
-
-	(* POSIX.1 *)
-		PROCEDURE [ccall] open* (path: PtrSTR; flags: intFlags; mode: mode_t): int;
-		PROCEDURE [ccall] write* (d: int; buf: PtrVoid; nbytes: size_t): ssize_t;
-		PROCEDURE [ccall] read* (d: int; buf: PtrVoid; nbytes: size_t): ssize_t;
-		PROCEDURE [ccall] close* (d: int): int;
-
-	(* POSIX.1 *)
-		PROCEDURE [ccall] chmod* (path: PtrSTR; mode: mode_t): int;
-		PROCEDURE [ccall] fchmod* (fd: int; mode: mode_t): int;
-
-	(* POSIX.1 *)
-		PROCEDURE [ccall] fork* (): pid_t;
-		PROCEDURE [ccall] waitpid* (wpid: pid_t; VAR [nil] status: int; options: intFlags): pid_t;
-
-	(* POSIX.1 *)
-		PROCEDURE [ccall] execv* (path: PtrSTR; argv: POINTER [untagged] TO ARRAY [untagged] OF PtrSTR): int;
-		PROCEDURE [ccall] execvp* (file: PtrSTR; argv: POINTER [untagged] TO ARRAY [untagged] OF PtrSTR): int;
-
-	(* POSIX.2 *)
-		PROCEDURE [ccall] system* (string: PtrSTR): int;
-
-	(* POSIX.1 *)
-		PROCEDURE [ccall] sysconf* (name: int): long;
-
-	(* POSIX.1 *)
-		PROCEDURE [ccall] popen* (command, type: PtrSTR): PtrFILE;
-		PROCEDURE [ccall] pclose* (stream: PtrFILE): int;
-
-	(* POSIX.1 *)
-		PROCEDURE [ccall] getrlimit* (resource: int; VAR rlim: rlimit): int;
-
-	(* POSIX.1 *)
-		PROCEDURE [ccall] utimensat* (fd: int; path: PtrSTR; VAR times: TVP; flag: intFlags): int;
-
-	(* Linux only *)
-		PROCEDURE [ccall] sendfile* (out_fd: int; in_fd: int; VAR [nil] offset: off_t; count: size_t): ssize_t;
-
-END LinLibc.

+ 1 - 0
Lin/Xtras/Libc/Libc.txt.templ

@@ -0,0 +1 @@
+../../../Obsd/Xtras/Libc/Libc.txt.templ

+ 1 - 1
Lin/Xtras/Libc/dumpdefs.py

@@ -1 +1 @@
-../dumpdefs.py
+../../../Obsd/Xtras/dumpdefs.py

+ 33 - 0
Lin/Xtras/Libc/mkdumpstrerrno.py

@@ -0,0 +1,33 @@
+#! /usr/bin/env python2.7
+
+import sys
+
+def main ():
+	r = []
+	while True:
+		line = sys.stdin.readline()
+		if line == '':
+			break
+		s = line.split()[0][:-1]
+		r.append("\tD(\"%s\", %s)" % (s, s))
+
+	print """/* this file was generated automatically */
+
+#include <errno.h>
+#include <stdio.h>
+#include <string.h>
+
+static void D (const char *s, int e)
+{
+	printf("%%s, %%s\\n", s, strerror(e));
+}
+
+int main (int argc, const char *argv[])
+{
+%s;
+
+	return 0;
+}""" % (';\n'.join(r),)
+
+if __name__ == '__main__':
+	main()

+ 18 - 0
Lin/Xtras/Libc/mkstrerrnocase.py

@@ -0,0 +1,18 @@
+#! /usr/bin/env python2.7
+
+import sys, string
+
+MOD = 'Libc'
+
+def main ():
+	while True:
+		line = sys.stdin.readline()
+		if line == '':
+			break
+		code, s = string.split(line.rstrip(), ', ', maxsplit=1)
+		if s[1].lower() == s[1]:
+			s = s[0].lower() + s[1:]
+		print '| %s.%s: s := "%s, %s"' % (MOD, code, code, s)
+
+if __name__ == '__main__':
+	main()

+ 1 - 1
Lin/Xtras/Libc/txt2odc.py

@@ -1 +1 @@
-../txt2odc.py
+../../../Obsd/Xtras/txt2odc.py

+ 1 - 1
Lin/Xtras/Libc/untempl.py

@@ -1 +1 @@
-../untempl.py
+../../../Obsd/Xtras/untempl.py

+ 1 - 1
Lin/Xtras/Net/Makefile

@@ -17,7 +17,7 @@ all: Net.odc ${DEFS}
 Net.odc: Net.txt
 	./txt2odc.py Net.txt Net.odc
 
-Net.txt: Net.txt.templ ${DEFS} libver osname machine fields-sockaddr fields-sockaddr_in fields-sockaddr_storage fields-addrinfo defs-fd_set-const defs-fd_set-type
+Net.txt: Net.txt.templ ${DEFS} libver osname machine fields-sockaddr fields-sockaddr_in fields-sockaddr_storage fields-addrinfo defs-fd_set_const defs-fd_set_type
 	${PY} ./untempl.py Net.txt.templ $@
 
 defs-basictypes: sizeofs

+ 0 - 140
Lin/Xtras/Net/Net.txt.templ

@@ -1,140 +0,0 @@
-MODULE LinNet ["libc.so%%libver%%"];
-
-	(*
-		%%osname%%
-		%%machine%%
-	*)
-
-	CONST
-		NULL* = 0H;
-
-		SOCKET_ERROR* = -1;
-		INVALID_SOCKET* = -1;
-
-		INADDR_NONE* = -1;
-		INADDR_ANY* = 0;
-
-		(* socket domains *)
-%%defs-af%%
-		(* socket types *)
-%%defs-sock%%
-		(* socket protocols *)
-%%defs-proto%%
-		(* socket options *)
-%%defs-so%%
-%%defs-shut%%
-%%defs-sol%%
-%%defs-msg%%
-%%defs-somaxconn%%
-		(* addrinfo.ai_flags *)
-%%defs-ai%%
-		(* getaddrinfo/getnameinfo/gai_strerror error codes *)
-%%defs-eai%%
-%%defs-fd_set-const%%
-	TYPE
-		u_int8_t = SHORTCHAR;
-		int8_t = SHORTCHAR;
-		uint16_t = SHORTINT;
-		(* PtrVoid, int, intFlags, short, socklen_t, size_t, ssize_t, in_addr_t, in_port_t, time_t, suseconds_t, nfds_t, sa_family_t *)
-%%defs-basictypes%%
-		PtrSTR* = POINTER [untagged] TO ARRAY [untagged] OF SHORTCHAR;
-
-		SOCKET* = int;
-
-(*
-		in_addr* = RECORD [untagged]
-			s_addr*: in_addr_t;
-		END;
-*)
-		in_addr* = RECORD [untagged]
-			S_un*: RECORD [union]
-				S_un_b*: RECORD [untagged]
-					s_b1*: SHORTCHAR;
-					s_b2*: SHORTCHAR;
-					s_b3*: SHORTCHAR;
-					s_b4*: SHORTCHAR;
-				END;
-				S_un_w*: RECORD [untagged]
-					s_w1*: SHORTINT;
-					s_w2*: SHORTINT;
-				END;
-				S_addr*: in_addr_t;
-			END;
-		END;
-
-		Ptrsockaddr* = POINTER [untagged] TO sockaddr;
-		sockaddr* = RECORD [untagged]
-%%fields-sockaddr%%
-		END;
-
-		Ptrsockaddr_storage = POINTER [untagged] TO sockaddr_storage;
-		sockaddr_storage* = RECORD [untagged]
-%%fields-sockaddr_storage%%
-		END;
-
-		Ptrsockaddr_in* = POINTER [untagged] TO sockaddr_in;
-		sockaddr_in* = RECORD [untagged]
-%%fields-sockaddr_in%%
-		END;
-
-		Ptraddrinfo* = POINTER [untagged] TO addrinfo;
-		addrinfo* = RECORD [untagged]
-%%fields-addrinfo%%
-		END;
-
-		timeval* = RECORD [untagged]
-			(* Linux, FreeBSD, OpenBSD *)
-				tv_sec*: time_t; (* seconds *)
-				tv_usec*: suseconds_t; (* and microseconds *)
-		END;
-
-		pollfd* = RECORD [untagged]
-			(* Linux, FreeBSD, OpenBSD *)
-				fd*: int;
-				events*: short;
-				revents*: short;
-		END;
-
-%%defs-fd_set-type%%
-	(* POSIX.1 *)
-		PROCEDURE [ccall] socket* (domain: int; type: int; protocol: int): SOCKET;
-		PROCEDURE [ccall] accept* (s: SOCKET; VAR addr: sockaddr; VAR addrlen: socklen_t): SOCKET;
-		PROCEDURE [ccall] bind* (s: SOCKET; VAR name: sockaddr; namelen: socklen_t): int;
-		PROCEDURE [ccall] connect* (s: SOCKET; VAR name: sockaddr; namelen: socklen_t): int;
-		PROCEDURE [ccall] getsockname* (s: SOCKET; VAR name: sockaddr; VAR namelen: socklen_t): int;
-		PROCEDURE [ccall] listen* (s: SOCKET; backlog: int): int;
-		PROCEDURE [ccall] recv* (s: SOCKET; buf: PtrVoid; len: size_t; flags: intFlags): ssize_t;
-		PROCEDURE [ccall] recvfrom* (s: SOCKET; buf: PtrVoid; len: size_t; flags: intFlags; VAR from: sockaddr; VAR fromlen: socklen_t): ssize_t;
-		PROCEDURE [ccall] send* (s: SOCKET; msg: PtrVoid; len: size_t; flags: intFlags): ssize_t;
-		PROCEDURE [ccall] sendto* (s: SOCKET; msg: PtrVoid; len: size_t; flags: intFlags; VAR to: sockaddr; tolen: socklen_t): ssize_t;
-		PROCEDURE [ccall] shutdown* (s: SOCKET; how: int): int;
-		PROCEDURE [ccall] getsockopt* (s: SOCKET; level: int; optname: intFlags; optval: PtrVoid; VAR [nil] optlen: socklen_t): int;
-		PROCEDURE [ccall] setsockopt* (s: SOCKET; level: int; optname: intFlags; optval: PtrVoid; optlen: socklen_t): int;
-
-		PROCEDURE [ccall] inet_addr* (cp: PtrSTR): in_addr_t;
-		PROCEDURE [ccall] htons* (host16: uint16_t): uint16_t;
-
-		PROCEDURE [ccall] select* (nfds: INTEGER; VAR [nil] readfds: fd_set; VAR [nil] writefds: fd_set; VAR [nil] exceptfds: fd_set; VAR timeout: timeval): int;
-
-		PROCEDURE [ccall] poll* (VAR fds: ARRAY [untagged] OF pollfd; nfds: nfds_t; timeout: int): int;
-
-(*
-	PROCEDURE FD_ZERO (VAR set: Net.fd_set);
-		VAR i: INTEGER;
-	BEGIN
-		i := LEN(set); REPEAT DEC(i); set[i] := {} UNTIL i = 0
-	END FD_ZERO;
-
-	PROCEDURE FD_SET (fd: Net.SOCKET; VAR set: Net.fd_set);
-	BEGIN
-		INCL(set[fd DIV 32], fd MOD 32)
-	END FD_SET;
-*)
-
-	(* POSIX.1g *)
-		PROCEDURE [ccall] getaddrinfo* (hostname: PtrSTR; servname: PtrSTR; VAR [nil] hints: addrinfo; VAR res: Ptraddrinfo): int;
-		PROCEDURE [ccall] freeaddrinfo* (ai: Ptraddrinfo);
-
-		PROCEDURE [ccall] gai_strerror* (ecode: int): PtrSTR;
-
-END LinNet.

+ 1 - 0
Lin/Xtras/Net/Net.txt.templ

@@ -0,0 +1 @@
+../../../Obsd/Xtras/Net/Net.txt.templ

+ 0 - 0
Lin/Xtras/Net/defs-fd_set-const → Lin/Xtras/Net/defs-fd_set_const


+ 0 - 0
Lin/Xtras/Net/defs-fd_set-type → Lin/Xtras/Net/defs-fd_set_type


+ 1 - 1
Lin/Xtras/Net/dumpdefs.py

@@ -1 +1 @@
-../dumpdefs.py
+../../../Obsd/Xtras/dumpdefs.py

+ 1 - 1
Lin/Xtras/Net/txt2odc.py

@@ -1 +1 @@
-../txt2odc.py
+../../../Obsd/Xtras/txt2odc.py

+ 1 - 1
Lin/Xtras/Net/untempl.py

@@ -1 +1 @@
-../untempl.py
+../../../Obsd/Xtras/untempl.py

+ 1 - 1
Lin/Xtras/Termios/dumpdefs.py

@@ -1 +1 @@
-../dumpdefs.py
+../../../Obsd/Xtras/dumpdefs.py

+ 1 - 1
Lin/Xtras/Termios/txt2odc.py

@@ -1 +1 @@
-../txt2odc.py
+../../../Obsd/Xtras/txt2odc.py

+ 1 - 1
Lin/Xtras/Termios/untempl.py

@@ -1 +1 @@
-../untempl.py
+../../../Obsd/Xtras/untempl.py

+ 0 - 155
Lin/Xtras/dumpdefs.py

@@ -1,155 +0,0 @@
-#! /usr/bin/env python2.7
-#
-# A. V. Shiryaev, 2012.09, 2016.11
-# simple *.h '#define' macro translator
-
-import sys, re
-
-INDENT = "\t"
-
-_p1 = re.compile('^#\s*define\s+([^\s]+)\s+([A-Za-z0-9]+)\s*$')
-_p2 = re.compile('^#\s*define\s+([^\s]+)\s+([^\s]+)\s+\/\*([^\*]+)\*\/\s*$')
-
-def mkset (x):
-	if x >= 0:
-		s = []
-		ss = 0
-		i = 0
-		while x != 0:
-			if x % 2 != 0:
-				if ss == 0:
-					si = i
-					sn = 1
-					ss = 1
-				elif i == si + sn:
-					sn = sn + 1
-				else:
-					if sn == 1:
-						s.append(str(si))
-					elif sn == 2:
-						s.append("%s,%s" % (si, si+1))
-					else:
-						s.append("%s..%s" % (si, si + sn - 1))
-					si = i
-					sn = 1
-			i = i + 1
-			x = x / 2
-		if ss == 1:
-			if sn == 1:
-				s.append(str(si))
-			elif sn == 2:
-				s.append("%s,%s" % (si, si+1))
-			else:
-				s.append("%s..%s" % (si, si + sn - 1))
-		return '{' + ','.join(s) + '}'
-	else:
-		return None
-
-def fixVal (x, tip):
-	if x.startswith('(') and x.endswith(')') and (x.count('(') == 1) and (x.count(')') == 1):
-		x = x[1:-1]
-
-	if x.startswith('0x'): # fix HEX
-		if tip == 'i':
-			if x[2] in ('0', '1', '2', '3', '4', '5', '6', '7', '8', '9'):
-				return x[2:].upper() + "H"
-			else:
-				return "0" + x[2:].upper() + "H"
-		elif tip == 's':
-			return mkset(int(x, 16))
-		elif tip == 'c':
-			if x[2] in ('0', '1', '2', '3', '4', '5', '6', '7', '8', '9'):
-				return x[2:].upper() + "X"
-			else:
-				return "0" + x[2:].upper() + "X"
-		else:
-			assert False
-	elif x[0] == '0': # fix OCT
-		if tip == 'i':
-			return str(int(x, 8))
-		elif tip == 's':
-			return mkset(int(x, 8))
-		elif tip == 'c':
-			return fixVal("0x%x" % (int(x, 8),), tip)
-		else:
-			assert False
-	else:
-		if tip == 'i':
-			return x
-		else:
-			try:
-				y = int(x)
-			except:
-				return x
-			else:
-				if tip == 's':
-					return mkset(y)
-				elif tip == 'c':
-					return fixVal("0x%x" % (int(y),), tip)
-				else:
-					assert False
-
-def p (nIndents, sym, val, comment, val1):
-	r = [ "%s%s* = %s;" % (INDENT*nIndents, sym, val) ]
-	if (val1 != None) and (val != val1):
-		r.append( "(* %s *)" % (val1,) )
-	if comment:
-		r.append( "(* %s *)" % (comment,) )
-	print ' '.join(r)
-
-def isBits (s):
-	return (len(s) > 1) and s.startswith('0') # HEX or OCT
-
-def main ():
-	if len(sys.argv) == 5:
-		nIndents = int(sys.argv[1])
-		if sys.argv[2] == '*':
-			level = None
-		else:
-			level = int(sys.argv[2])
-		tip = sys.argv[3]
-		assert tip in ('i', 's', 'c')
-
-		fh = open(sys.argv[4], 'r')
-		st = 0
-		for line in fh.readlines():
-			if line.startswith("#if"):
-				# print line,
-				st = st + 1
-			elif line.startswith("#endif"):
-				# print line,
-				st = st - 1
-			elif (level == None) or (st == level):
-				r = _p2.match(line)
-				if r:
-					sym = r.group(1)
-					val = fixVal(r.group(2), tip)
-					if isBits(r.group(2)):
-						val1 = fixVal(r.group(2), 's')
-					else:
-						val1 = None
-					comment = r.group(3).strip()
-					p(nIndents, sym, val, comment, val1)
-				else:
-					r = _p1.match(line)
-					if r:
-						sym = r.group(1)
-						val = fixVal(r.group(2), tip)
-						if isBits(r.group(2)):
-							val1 = fixVal(r.group(2), 's')
-						else:
-							val1 = None
-						comment = None
-						p(nIndents, sym, val, comment, val1)
-	else:
-		print "usage: %s nIndents level type file.h" % (sys.argv[0],)
-		print "	level:"
-		print "		number: selected level"
-		print "		*: all levels"
-		print "	type:"
-		print "		i: integer"
-		print "		s: set"
-		print "		c: shortchar"
-
-if __name__ == '__main__':
-	main()

+ 0 - 86
Lin/Xtras/txt2odc.py

@@ -1,86 +0,0 @@
-#! /usr/bin/env python2.7
-# -*- coding: utf-8 -*-
-#
-# Alexander Shiryaev, 2020.01
-#
-# Documents.ExportDocument
-#
-# ASCII only
-
-import sys, re
-
-def Int (x):
-	assert x >= 0
-	assert x < 0x100000000
-	return chr(x % 0x100) + chr((x >> 8) % 0x100) + chr((x >> 16) % 0x100) + chr((x >> 24) % 0x100)
-
-hdr0 = "CDOo" + Int(0) + \
-	"\x82\xf1" + "Documents.StdDocumentDesc" + \
-	"\x00\xf1" + "Documents.DocumentDesc" + \
-	"\x00\xf1" + "Containers.ViewDesc" + \
-	"\x00\xf1" + "Views.ViewDesc" + \
-	"\x00\xf0" + "Stores.StoreDesc" + \
-	"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00"
-
-hdr1 = "\x00\x00\x00\x83\xf1" + "Documents.ModelDesc" + \
-	"\x00\xf1" + "Containers.ModelDesc" + \
-	"\x00\xf1" + "Models.ModelDesc" + \
-	"\x00\xf1" + "Stores.ElemDesc" + \
-	"\x00\xf2\x04\x00\x00\x00\x00\x00\x00\x00"
-
-hdr2 = "\x09\x00\x00\x00"
-
-hdr3 = "\x00\x00\x00\x00\x00\x82\xf1" + "TextViews.StdViewDesc" + \
-	"\x00\xf1" + "TextViews.ViewDesc" + \
-	"\x00\xf2\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00"
-
-hdr4 = "\x00\x00\x00\x83\xf1" + "TextModels.StdModelDesc" + \
-	"\x00\xf1" + "TextModels.ModelDesc" + \
-	"\x00\xf2\x06\x00\x00\x00\x00\x00\x00\x00"
-
-hdr5 = "\x0f\x00\x00\x00"
-
-hdr6 = "\x00\x00\x00\x00\x00\x00\x51\x00\x00\x00\x00\x82\xf1" + "TextModels.AttributesDesc" + \
-	"\x00\xf2\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1a\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x2a\x00\x18\xf0\x01\x00\x00\x00\x00\x00\x90\x01\x00\x00\x00\x00"
-
-hdr7 = "\xff"
-
-trl = "\x82\xf1" + "TextControllers.StdCtrlDesc" + \
-	"\x00\xf1" + "TextControllers.ControllerDesc" + \
-	"\x00\xf1" + "Containers.ControllerDesc" + \
-	"\x00\xf1" + "Controllers.ControllerDesc" + \
-	"\x00\xf2\x04\x00\x00\x00\x00\x00\x00\x00\x14\x00\x00\x00\x00\x00\x00\x00\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x82\xf1" + "TextRulers.StdRulerDesc" + \
-	"\x00\xf1" + "TextRulers.RulerDesc" + \
-	"\x00\xf2\x03\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x07\x00\x00\x00\xa3\x00\x00\x00\x00\x00\x00\x83\xf1" + "TextRulers.StdStyleDesc" + \
-	"\x00\xf1" + "TextRulers.StyleDesc" + \
-	"\x00\xf2\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x5a\x00\x00\x00\x00\x00\x00\x00\x82\xf1" + "TextRulers.AttributesDesc" + \
-	"\x00\xf2\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x20\xa3\x5a\x00\x00\x00\x00\x00\xbb\xf2\x01\x00\x2c\x68\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x82\xf2\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1a\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x2a\x00\x18\xf0\x01\x00\x00\x00\x00\x00\x90\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0c\xf8\x00\x00\x0c\xf8\x00\x00\x2c\x9b\x5b\x00\x0b\xf8\x00\x40\x82\xf1" + "Documents.ControllerDesc" + \
-	"\x00\xf2\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x09\x00\x00\x00\x00\x40\x5b\x73\x00\x00\x99\xa2\x00\x80\xfc\x0a\x00\x80\xfc\x0a\x00\xc0\x5e\x68\x00\x80\x9c\x97\x00\x00"
-
-def splitToLines (text):
-	lines = []
-	[ [ lines.append(l1) for l1 in re.split( '[\r\n]', l ) ] for l in text.split('\r\n') ]
-	return lines
-
-def txt2odc (text):
-	# text = text.replace('\n', chr(0x0d))
-	text = chr(0x0d).join(splitToLines(text))
-
-	l = len(text)
-
-	return hdr0 + Int(l + 873) + hdr1 + Int(l + 695) + hdr2 + Int(l + 687) + hdr3 + Int(l + 601) + hdr4 + Int(l + 99) + hdr5 + Int(l + 91) + hdr6 + Int(l) + hdr7 + text + trl
-
-def main ():
-	if len(sys.argv) == 3:
-		fh = open(sys.argv[1], 'rb')
-		text = fh.read()
-		fh.close()
-
-		fh = open(sys.argv[2], 'wb')
-		fh.write(txt2odc(text))
-		fh.close()
-	else:
-		print("usage: %s file.txt file.odc" % (sys.argv[0],))
-
-if __name__ == '__main__':
-	main()

+ 0 - 39
Lin/Xtras/untempl.py

@@ -1,39 +0,0 @@
-#! /usr/bin/env python2.7
-
-import sys, re
-
-def readFile (fileName):
-	fh = open(fileName, 'rb')
-	x = fh.read()
-	fh.close()
-	return x
-
-def writeFile (fileName, x):
-	fh = open(fileName, 'wb')
-	fh.write(x)
-	fh.close()
-
-_p = re.compile('\%\%([^\%]+)\%\%')
-
-def untempl (x):
-	while True:
-		r = _p.search(x)
-		if r:
-			fileName = r.group(1)
-			y = readFile(fileName)
-			toRepl = "%%%%%s%%%%" % (fileName,)
-			x = x.replace(toRepl, y)
-		else:
-			break
-	return x
-
-def main ():
-	if len(sys.argv) != 3:
-		print "usage: %s oldfile newfile" % (sys.argv[0],)
-	else:
-		old = readFile(sys.argv[1])
-		new = untempl(old)
-		writeFile(sys.argv[2], new)
-
-if __name__ == '__main__':
-	main()

+ 14 - 0
Obsd/Xtras/Ioctl/Ioctl.txt.templ

@@ -0,0 +1,14 @@
+MODULE LinIoctl ["libc.so%%libver%%"];
+
+	(*
+		%%osname%%
+		%%machine%%
+	*)
+
+	CONST
+%%defs-tiocm%%
+%%defs-ioctl%%
+	PROCEDURE [ccall] ioctl0* ["ioctl"] (d: INTEGER; req: INTEGER): INTEGER;
+	PROCEDURE [ccall] ioctl1* ["ioctl"] (d: INTEGER; req: INTEGER; VAR arg: INTEGER): INTEGER;
+
+END LinIoctl.

+ 47 - 0
Obsd/Xtras/LibW/LibW.txt.templ

@@ -0,0 +1,47 @@
+MODULE LinLibW ["libc.so%%libver%%"];
+
+	(*
+		%%osname%%
+		%%machine%%
+	*)
+
+	IMPORT Libc := LinLibc;
+
+	CONST
+%%defs-lc%%
+	TYPE
+		(* int, wchar_t, wint_t, size_t, mbstate_t *)
+%%defs-basictypes%%
+		PtrWSTR* = POINTER [untagged] TO ARRAY [untagged] OF wchar_t;
+
+	PROCEDURE [ccall] setlocale* (category: int; locale: Libc.PtrSTR): Libc.PtrSTR;
+
+	PROCEDURE [ccall] mbsinit* (VAR [nil] ps: mbstate_t): int;
+
+	PROCEDURE [ccall] wctomb* (s: Libc.PtrSTR; wchar: wchar_t): int;
+	PROCEDURE [ccall] wcstombs* (s: Libc.PtrSTR; pwcs: PtrWSTR; n: size_t): size_t;
+
+	PROCEDURE [ccall] wcrtomb* (s: Libc.PtrSTR; wc: wchar_t; VAR [nil] ps: mbstate_t): size_t;
+	PROCEDURE [ccall] wcsrtombs* (dst: Libc.PtrSTR; VAR src: PtrWSTR; len: size_t; VAR [nil] ps: mbstate_t): size_t;
+	PROCEDURE [ccall] wcsnrtombs* (dst: Libc.PtrSTR; VAR src: PtrWSTR; nwc: size_t; len: size_t; VAR [nil] ps: mbstate_t): size_t;
+
+	PROCEDURE [ccall] mbtowc* (pwc: PtrWSTR; s: Libc.PtrSTR; n: size_t): int;
+	PROCEDURE [ccall] mbstowcs* (pwcs: PtrWSTR; s: Libc.PtrSTR; n: size_t): size_t;
+	PROCEDURE [ccall] mblen* (s: Libc.PtrSTR; n: size_t): int;
+
+	PROCEDURE [ccall] mbrtowc* (wc: PtrWSTR; s: Libc.PtrSTR; n: size_t; VAR [nil] mbs: mbstate_t): size_t;
+	PROCEDURE [ccall] mbsrtowcs* (dst: PtrWSTR; VAR src: Libc.PtrSTR; len: size_t; VAR [nil] ps:  mbstate_t): size_t;
+	PROCEDURE [ccall] mbsnrtowcs* (dst: PtrWSTR; VAR src: Libc.PtrSTR; nmc: size_t; len: size_t; VAR [nil] ps: mbstate_t): size_t;
+	PROCEDURE [ccall] mbrlen* (s: Libc.PtrSTR; n: size_t; VAR [nil] ps: mbstate_t): size_t;
+
+	PROCEDURE [ccall] iswalpha* (wc: wint_t): int;
+	PROCEDURE [ccall] iswlower* (wc: wint_t): int;
+	PROCEDURE [ccall] iswupper* (wc: wint_t): int;
+	PROCEDURE [ccall] towlower* (wc: wint_t): wint_t;
+	PROCEDURE [ccall] towupper* (wc: wint_t): wint_t;
+
+	PROCEDURE [ccall] wprintf* (fmt: PtrWSTR): int;
+	PROCEDURE [ccall] fputws* (ws: PtrWSTR; fp: Libc.PtrFILE): int;
+	PROCEDURE [ccall] fgetws* (ws: PtrWSTR; n: int; fp: Libc.PtrFILE): PtrWSTR;
+
+END LinLibW.

+ 278 - 0
Obsd/Xtras/Libc/Libc.txt.templ

@@ -0,0 +1,278 @@
+MODULE LinLibc ["libc.so%%libver%%"];
+
+	(*
+		%%osname%%
+		%%machine%%
+	*)
+
+	CONST
+		NULL* = 0H;
+		FALSE* = 0;
+		TRUE* = 1;
+
+		CLOCKS_PER_SEC* = %%clockspersec%%;
+
+		MAP_FAILED* = -1;
+
+		(* MAP_PRIVATE, MAP_ANON (intFlags) *)
+%%defs-map%%
+
+		(* PROT_READ, PROT_WRITE, PROT_EXEC (intFlags) *)
+%%defs-prot%%
+
+		(* SIG_UNBLOCK, SIG_SETMASK (int) *)
+%%defs-sigmask%%
+
+		(* FPE_INTDIV, FPE_INTOVF, FPE_FLTDIV, FPE_FLTOVF, FPE_FLTUND, FPE_FLTRES, FPE_FLTINV, FPE_FLTSUB (int) *)
+%%defs-fpe%%
+
+		(* SA_SIGINFO (intFlags) *)
+%%defs-sa%%
+
+		(* SIGINT, SIGILL, SIGFPE, SIGSEGV, SIGKILL, SIGSTOP, SIGWINCH, SIGTHR (int) *)
+%%defs-signo%%
+		_NSIG* = %%nsig%%;
+
+		(* SIG_DFL, SIG_IGN, SIG_ERR *)
+%%defs-sig%%
+
+(*
+		PAGE_SIZE* = 4096;
+*)
+%%defs-sc%%
+
+		SIGSTKSZ* = %%sigstksz%%;
+
+		(* ENOENT, EEXIST, EACCES, ENOMEM, EDQUOT, EMFILE, ENOTDIR (int) *)
+%%defs-errno%%
+
+%%defs-wait%%
+
+		NAME_MAX* = %%namemax%%;
+
+		SEEK_SET* = 0;
+		SEEK_CUR* = 1;
+		SEEK_END* = 2;
+
+		STDIN_FILENO* = 0;
+		STDOUT_FILENO* = 1;
+		STDERR_FILENO* = 2;
+
+		P_tmpdir* = "/tmp";
+
+		(* O_RDWR, O_NONBLOCK (intFlags) *)
+%%defs-fcntlo%%
+
+%%defs-clockid%%
+
+%%defs-rlimit%%
+
+%%defs-utime%%
+
+	TYPE
+		StrArray* = POINTER TO ARRAY [untagged] OF PtrSTR;
+		PtrSTR* = POINTER TO ARRAY [untagged] OF SHORTCHAR;
+
+		(* PtrVoid, int, long, size_t, ssize_t, off_t, time_t, clock_t, sigjmp_buf *)
+		(* mode_t, rlim_t, intFlags, sigset_t (set) *)
+%%defs-basictypes%%
+
+		tm* = POINTER TO tmDesc;
+		tmDesc* = RECORD [untagged]
+			(* NOTE: check record size *)
+			(* tm_year, tm_mon, tm_mday, tm_hour, tm_min, tm_sec, tm_wday [ , tm_gmtoff ] *)
+%%fields-tm%%
+		END;
+
+		Ptrsiginfo_t* = POINTER TO siginfo_t;
+		siginfo_t = RECORD [untagged]
+			(* si_code, fault address *)
+%%fields-siginfo%%
+		END;
+
+		Ptrucontext_t* = POINTER TO ucontext_t;
+		ucontext_t = RECORD [untagged]
+			(* IP, SP, FP *)
+%%fields-ucontext%%
+		END;
+
+		sa_sigaction_t* = PROCEDURE [ccall] (sig: int; siginfo: Ptrsiginfo_t; context: Ptrucontext_t);
+		sigaction_t* = RECORD [untagged]
+(*
+			sa_sigaction*: sa_sigaction_t,
+			sa_flags*: intFlags, sa_mask*: sigset_t
+*)
+%%fields-sigaction%%
+		END;
+
+		stack_t* = RECORD [untagged]
+(*
+			ss_sp*: PtrVoid, ss_size*: size_t, ss_flags*: intFlags
+*)
+%%fields-stack%%
+		END;
+
+		stat_t* = RECORD [untagged]
+(*
+			NOTE: check record size
+			st_mode*: mode_t, st_size*: off_t, st_mtime*: time_t
+*)
+%%fields-stat%%
+		END;
+
+		PtrFILE* = PtrVoid;
+		PtrDIR* = PtrVoid;
+
+		PtrDirent* = POINTER TO Dirent;
+		Dirent = RECORD [untagged]
+(*
+			d_name*: ARRAY [untagged] NAME_MAX + 1 OF SHORTCHAR
+*)
+%%fields-dirent%%
+		END;
+
+		timespec_t* = RECORD [untagged]
+%%fields-timespec%%
+		END;
+
+		rlimit* = RECORD [untagged]
+			rlim_cur*, rlim_max*: rlim_t
+		END;
+
+		TVP* = RECORD [untagged] access*, modification*: timespec_t END;
+
+(*
+	VAR
+		stdin*: INTEGER;
+		timezone*: INTEGER; (* or tm.tm_gmtoff *)
+*)
+(*
+	PROCEDURE [ccall] __errno_location* (): PtrVoid;
+*)
+(*
+	(* POSIX.1 *)
+		PROCEDURE [ccall] stat* (path: PtrSTR; VAR sp: stat_t): int;
+*)
+%%custom%%
+
+	(* ANSI C 89 *)
+		PROCEDURE [ccall] clock* (): clock_t;
+
+	(* POSIX.1 *)
+		PROCEDURE [ccall] clock_gettime* (clock_id: clockid_t; VAR tp: timespec_t): int;
+
+	(* AT&T UNIX *)
+		PROCEDURE [ccall] time* (VAR [nil] tloc: time_t): time_t;
+
+	(* AT&T UNIX *)
+		PROCEDURE [ccall] gmtime* (VAR [nil] clock: time_t): tm;
+		PROCEDURE [ccall] localtime* (VAR [nil] clock: time_t): tm;
+		PROCEDURE [ccall] mktime* (VAR tm: tmDesc): time_t;
+
+	PROCEDURE [ccall] mmap* (adr: PtrVoid; len: size_t; prot: intFlags; flags: intFlags; fd: int; offset: off_t): PtrVoid;
+	(* BSD *)
+		PROCEDURE [ccall] munmap* (adr: PtrVoid; len: size_t): int;
+		PROCEDURE [ccall] mprotect* (adr: PtrVoid; len: size_t; prot: intFlags): int;
+
+	PROCEDURE [ccall] calloc* (nmemb: size_t; size: size_t): PtrVoid;
+(*	(* ANSI C 89 *)
+		PROCEDURE [ccall] malloc* (size: size_t): PtrVoid;
+*)
+		PROCEDURE [ccall] free* (ptr: PtrVoid);
+
+
+	(* POSIX.1 *)
+(*
+		PROCEDURE [ccall] sigsetjmp* (VAR env: sigjmp_buf; savemask: int): int;
+*)
+		PROCEDURE [ccall] siglongjmp* (VAR env: sigjmp_buf; val: int);
+
+	(* POSIX.1 *)
+		PROCEDURE [ccall] sigemptyset* (set: PtrSigset_t): int;
+		PROCEDURE [ccall] sigfillset* (set: PtrSigset_t): int;
+		PROCEDURE [ccall] sigaddset* (set: PtrSigset_t; signo: int): int;
+		PROCEDURE [ccall] sigprocmask* (how: int; set: PtrSigset_t; oset: PtrSigset_t): int;
+
+	(* POSIX.1 *)
+		PROCEDURE [ccall] sigaction* (sig: int; VAR [nil] act: sigaction_t; VAR [nil] oact: sigaction_t): int;
+
+	(* BSD *)
+		PROCEDURE [ccall] sigaltstack* (VAR [nil] ss: stack_t; VAR [nil] oss: stack_t): int;
+
+	(* ANSI C 89 *)
+		PROCEDURE [ccall] getenv* (s: PtrSTR): PtrSTR;
+
+	(* ANSI C 89 *)
+		PROCEDURE [ccall] fopen* (path, mode: PtrSTR): PtrFILE;
+		PROCEDURE [ccall] fdopen* (fildes: int; mode: PtrSTR): PtrFILE;
+		PROCEDURE [ccall] fclose* (stream: PtrFILE): int;
+		PROCEDURE [ccall] fread* (ptr: PtrVoid; size: size_t; nmemb: size_t; stream: PtrFILE): size_t;
+		PROCEDURE [ccall] fwrite* (ptr: PtrVoid; size: size_t; nmemb: size_t; stream: PtrFILE): size_t;
+		PROCEDURE [ccall] fflush* (s: PtrFILE): int;
+		PROCEDURE [ccall] printf* (s: PtrSTR): int;
+	(* ANSI C 89, XPG4 *)
+		PROCEDURE [ccall] fseek* (stream: PtrFILE; offset: long; whence: int): int;
+
+	(* POSIX.1 *)
+		PROCEDURE [ccall] fileno* (stream: PtrFILE): int;
+
+	(* POSIX.1 *)
+		PROCEDURE [ccall] rename* (from, to: PtrSTR): int;
+		PROCEDURE [ccall] mkdir* (path: PtrSTR; mode: mode_t): int;
+		PROCEDURE [ccall] opendir* (filename: PtrSTR): PtrDIR;
+		PROCEDURE [ccall] readdir* (dirp: PtrDIR): PtrDirent;
+		PROCEDURE [ccall] closedir* (dirp: PtrDIR): int;
+	(* ANSI C 89, XPG4.2 *)
+		PROCEDURE [ccall] remove* (path: PtrSTR): int;
+		PROCEDURE [ccall] canonicalize_file_name* (path: PtrSTR): PtrSTR;
+
+	(* POSIX.1 *)
+		PROCEDURE [ccall] getcwd* (buf: PtrSTR; size: size_t): PtrSTR;
+
+	(* ANSI C 99 *)
+		PROCEDURE [ccall] exit* (status: int);
+
+	(* ANSI C 89 *)
+		PROCEDURE [ccall] strftime* (buf: PtrSTR; maxsize: size_t; format: PtrSTR; timeptr: tm): size_t;
+
+	(* XXX: use fread instead *)
+		PROCEDURE [ccall] fgets* (str: PtrSTR; size: int; stream: PtrFILE): PtrSTR;
+
+	(* POSIX.1 *)
+		PROCEDURE [ccall] open* (path: PtrSTR; flags: intFlags; mode: mode_t): int;
+		PROCEDURE [ccall] write* (d: int; buf: PtrVoid; nbytes: size_t): ssize_t;
+		PROCEDURE [ccall] read* (d: int; buf: PtrVoid; nbytes: size_t): ssize_t;
+		PROCEDURE [ccall] close* (d: int): int;
+
+	(* POSIX.1 *)
+		PROCEDURE [ccall] chmod* (path: PtrSTR; mode: mode_t): int;
+		PROCEDURE [ccall] fchmod* (fd: int; mode: mode_t): int;
+
+	(* POSIX.1 *)
+		PROCEDURE [ccall] fork* (): pid_t;
+		PROCEDURE [ccall] waitpid* (wpid: pid_t; VAR [nil] status: int; options: intFlags): pid_t;
+
+	(* POSIX.1 *)
+		PROCEDURE [ccall] execv* (path: PtrSTR; argv: POINTER [untagged] TO ARRAY [untagged] OF PtrSTR): int;
+		PROCEDURE [ccall] execvp* (file: PtrSTR; argv: POINTER [untagged] TO ARRAY [untagged] OF PtrSTR): int;
+
+	(* POSIX.2 *)
+		PROCEDURE [ccall] system* (string: PtrSTR): int;
+
+	(* POSIX.1 *)
+		PROCEDURE [ccall] sysconf* (name: int): long;
+
+	(* POSIX.1 *)
+		PROCEDURE [ccall] popen* (command, type: PtrSTR): PtrFILE;
+		PROCEDURE [ccall] pclose* (stream: PtrFILE): int;
+
+	(* POSIX.1 *)
+		PROCEDURE [ccall] getrlimit* (resource: int; VAR rlim: rlimit): int;
+
+	(* POSIX.1 *)
+		PROCEDURE [ccall] utimensat* (fd: int; path: PtrSTR; VAR times: TVP; flag: intFlags): int;
+
+	(* Linux only *)
+		PROCEDURE [ccall] sendfile* (out_fd: int; in_fd: int; VAR [nil] offset: off_t; count: size_t): ssize_t;
+
+END LinLibc.

+ 1 - 1
Obsd/Xtras/Net/Makefile

@@ -15,7 +15,7 @@ all: Net.odc ${DEFS}
 Net.odc: Net.txt
 	./txt2odc.py Net.txt Net.odc
 
-Net.txt: Net.txt.templ ${DEFS} libver osname machine fields-sockaddr fields-sockaddr_in fields-sockaddr_storage fields-addrinfo defs-fd_set-const defs-fd_set-type
+Net.txt: Net.txt.templ ${DEFS} libver osname machine fields-sockaddr fields-sockaddr_in fields-sockaddr_storage fields-addrinfo defs-fd_set_const defs-fd_set_type
 	${PY} ./untempl.py Net.txt.templ ${.TARGET}
 
 defs-basictypes: sizeofs

+ 140 - 0
Obsd/Xtras/Net/Net.txt.templ

@@ -0,0 +1,140 @@
+MODULE LinNet ["libc.so%%libver%%"];
+
+	(*
+		%%osname%%
+		%%machine%%
+	*)
+
+	CONST
+		NULL* = 0H;
+
+		SOCKET_ERROR* = -1;
+		INVALID_SOCKET* = -1;
+
+		INADDR_NONE* = -1;
+		INADDR_ANY* = 0;
+
+		(* socket domains *)
+%%defs-af%%
+		(* socket types *)
+%%defs-sock%%
+		(* socket protocols *)
+%%defs-proto%%
+		(* socket options *)
+%%defs-so%%
+%%defs-shut%%
+%%defs-sol%%
+%%defs-msg%%
+%%defs-somaxconn%%
+		(* addrinfo.ai_flags *)
+%%defs-ai%%
+		(* getaddrinfo/getnameinfo/gai_strerror error codes *)
+%%defs-eai%%
+%%defs-fd_set_const%%
+	TYPE
+		u_int8_t = SHORTCHAR;
+		int8_t = SHORTCHAR;
+		uint16_t = SHORTINT;
+		(* PtrVoid, int, intFlags, short, socklen_t, size_t, ssize_t, in_addr_t, in_port_t, time_t, suseconds_t, nfds_t, sa_family_t *)
+%%defs-basictypes%%
+		PtrSTR* = POINTER [untagged] TO ARRAY [untagged] OF SHORTCHAR;
+
+		SOCKET* = int;
+
+(*
+		in_addr* = RECORD [untagged]
+			s_addr*: in_addr_t;
+		END;
+*)
+		in_addr* = RECORD [untagged]
+			S_un*: RECORD [union]
+				S_un_b*: RECORD [untagged]
+					s_b1*: SHORTCHAR;
+					s_b2*: SHORTCHAR;
+					s_b3*: SHORTCHAR;
+					s_b4*: SHORTCHAR;
+				END;
+				S_un_w*: RECORD [untagged]
+					s_w1*: SHORTINT;
+					s_w2*: SHORTINT;
+				END;
+				S_addr*: in_addr_t;
+			END;
+		END;
+
+		Ptrsockaddr* = POINTER [untagged] TO sockaddr;
+		sockaddr* = RECORD [untagged]
+%%fields-sockaddr%%
+		END;
+
+		Ptrsockaddr_storage = POINTER [untagged] TO sockaddr_storage;
+		sockaddr_storage* = RECORD [untagged]
+%%fields-sockaddr_storage%%
+		END;
+
+		Ptrsockaddr_in* = POINTER [untagged] TO sockaddr_in;
+		sockaddr_in* = RECORD [untagged]
+%%fields-sockaddr_in%%
+		END;
+
+		Ptraddrinfo* = POINTER [untagged] TO addrinfo;
+		addrinfo* = RECORD [untagged]
+%%fields-addrinfo%%
+		END;
+
+		timeval* = RECORD [untagged]
+			(* Linux, FreeBSD, OpenBSD *)
+				tv_sec*: time_t; (* seconds *)
+				tv_usec*: suseconds_t; (* and microseconds *)
+		END;
+
+		pollfd* = RECORD [untagged]
+			(* Linux, FreeBSD, OpenBSD *)
+				fd*: int;
+				events*: short;
+				revents*: short;
+		END;
+
+%%defs-fd_set_type%%
+	(* POSIX.1 *)
+		PROCEDURE [ccall] socket* (domain: int; type: int; protocol: int): SOCKET;
+		PROCEDURE [ccall] accept* (s: SOCKET; VAR addr: sockaddr; VAR addrlen: socklen_t): SOCKET;
+		PROCEDURE [ccall] bind* (s: SOCKET; VAR name: sockaddr; namelen: socklen_t): int;
+		PROCEDURE [ccall] connect* (s: SOCKET; VAR name: sockaddr; namelen: socklen_t): int;
+		PROCEDURE [ccall] getsockname* (s: SOCKET; VAR name: sockaddr; VAR namelen: socklen_t): int;
+		PROCEDURE [ccall] listen* (s: SOCKET; backlog: int): int;
+		PROCEDURE [ccall] recv* (s: SOCKET; buf: PtrVoid; len: size_t; flags: intFlags): ssize_t;
+		PROCEDURE [ccall] recvfrom* (s: SOCKET; buf: PtrVoid; len: size_t; flags: intFlags; VAR from: sockaddr; VAR fromlen: socklen_t): ssize_t;
+		PROCEDURE [ccall] send* (s: SOCKET; msg: PtrVoid; len: size_t; flags: intFlags): ssize_t;
+		PROCEDURE [ccall] sendto* (s: SOCKET; msg: PtrVoid; len: size_t; flags: intFlags; VAR to: sockaddr; tolen: socklen_t): ssize_t;
+		PROCEDURE [ccall] shutdown* (s: SOCKET; how: int): int;
+		PROCEDURE [ccall] getsockopt* (s: SOCKET; level: int; optname: intFlags; optval: PtrVoid; VAR [nil] optlen: socklen_t): int;
+		PROCEDURE [ccall] setsockopt* (s: SOCKET; level: int; optname: intFlags; optval: PtrVoid; optlen: socklen_t): int;
+
+		PROCEDURE [ccall] inet_addr* (cp: PtrSTR): in_addr_t;
+		PROCEDURE [ccall] htons* (host16: uint16_t): uint16_t;
+
+		PROCEDURE [ccall] select* (nfds: INTEGER; VAR [nil] readfds: fd_set; VAR [nil] writefds: fd_set; VAR [nil] exceptfds: fd_set; VAR timeout: timeval): int;
+
+		PROCEDURE [ccall] poll* (VAR fds: ARRAY [untagged] OF pollfd; nfds: nfds_t; timeout: int): int;
+
+(*
+	PROCEDURE FD_ZERO (VAR set: Net.fd_set);
+		VAR i: INTEGER;
+	BEGIN
+		i := LEN(set); REPEAT DEC(i); set[i] := {} UNTIL i = 0
+	END FD_ZERO;
+
+	PROCEDURE FD_SET (fd: Net.SOCKET; VAR set: Net.fd_set);
+	BEGIN
+		INCL(set[fd DIV 32], fd MOD 32)
+	END FD_SET;
+*)
+
+	(* POSIX.1g *)
+		PROCEDURE [ccall] getaddrinfo* (hostname: PtrSTR; servname: PtrSTR; VAR [nil] hints: addrinfo; VAR res: Ptraddrinfo): int;
+		PROCEDURE [ccall] freeaddrinfo* (ai: Ptraddrinfo);
+
+		PROCEDURE [ccall] gai_strerror* (ecode: int): PtrSTR;
+
+END LinNet.

+ 0 - 0
Obsd/Xtras/Net/defs-fd_set-const → Obsd/Xtras/Net/defs-fd_set_const


+ 0 - 0
Obsd/Xtras/Net/defs-fd_set-type → Obsd/Xtras/Net/defs-fd_set_type