浏览代码

added file_is_locked

Nicolas Cannasse 5 年之前
父节点
当前提交
e66d50c59c
共有 1 个文件被更改,包括 13 次插入0 次删除
  1. 13 0
      src/std/file.c

+ 13 - 0
src/std/file.c

@@ -76,6 +76,17 @@ HL_PRIM hl_fdesc *hl_file_open( vbyte *name, int mode, bool binary ) {
 	return fd;
 }
 
+HL_PRIM bool hl_file_is_locked( vbyte *name ) {
+#	ifdef HL_WIN
+	HANDLE h = CreateFile((uchar*)name,GENERIC_READ,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
+	if( h == INVALID_HANDLE_VALUE ) return true;
+	CloseHandle(h);
+	return false;
+#	else
+	return false;
+#	endif
+}
+
 HL_PRIM void hl_file_close( hl_fdesc *f ) {
 	if( !f ) return;
 	if( f->f ) fclose(f->f);
@@ -254,3 +265,5 @@ DEFINE_PRIM(_FILE, file_stdin, _NO_ARG);
 DEFINE_PRIM(_FILE, file_stdout, _NO_ARG);
 DEFINE_PRIM(_FILE, file_stderr, _NO_ARG);
 DEFINE_PRIM(_BYTES, file_contents, _BYTES _REF(_I32));
+DEFINE_PRIM(_BOOL, file_is_locked, _BYTES);
+