import os, struct
from distutils.version import StrictVersion

def mkdir_noerror(d):
	try:
		os.mkdir(d)
	except OSError:
		pass

def language_by_filename(name):
	extension = name.rsplit(".")[-1] 
	if extension in ["v", "vh", "vo"]:
		return "verilog"
	if extension in ["vhd", "vhdl", "vho"]:
		return "vhdl"
	return None

def write_to_file(filename, contents, force_unix=False):
	newline = None
	if force_unix:
		newline = "\n"
	f = open(filename, "w", newline=newline)
	f.write(contents)
	f.close()

def arch_bits():
	return struct.calcsize("P")*8

def versions(path):
	for n in os.listdir(path):
		full = os.path.join(path, n)
		if not os.path.isdir(full):
			continue
		try:
			yield StrictVersion(n)
		except ValueError:
			continue