统计lua源码行数

这几天在通读lua的源码,心血来潮想统计下源码的总行数有多少。

编码环境ubuntu14

#include 
#include 
#include 
#include 

int count_file_lines(char *file)
{
	FILE* fd = fopen(file,"r");
	int lines = 0;
	char buf[256] = {0};

	if(fd)
	{
		while(fgets(buf,sizeof(buf),fd) != NULL)
		{
			if(buf[0] != '/' && buf[0] != '*' && buf[0] !='\n')  // 注释 及空行 不统计
			{
				lines += 1;
			}
		 else
         {
                 perror("open file fail");
         }
			memset(buf,0,256);
		}
	}
	
	printf("file:%s lines:%d\n",file,lines);
	return lines;
}

int main(int argc,char *argv[])
{
  	if(argc != 2)
	{
		printf("param is novalid");
		return;
	}
	
	int lines = 0;
	char *path = argv[1];
	DIR *dir = opendir(path);
	struct dirent *ptr = NULL;
	char file_path[100] = {0};
	int limit = 0;
	while((ptr = readdir(dir))!= NULL )
	{
	//	printf("file type:%d,%d\n",ptr->d_type,limit++);

	//	if(strcmp(ptr->d_name,".") == 0 || strcmp(ptr->d_name,"..")==0) continue;  //。 和 .. 文件夹 文件类型 为 4
		if(ptr->d_type == 8) // 文件(8)、目录(4)、链接文件(10)等
		{
			memset(file_path,0,sizeof(file_path));
			strcat(file_path,path);
			strcat(file_path,"/");
			strcat(file_path,ptr->d_name);
			lines += count_file_lines(file_path);
		}
//		printf("%s\n",ptr->d_name);
	}
	
	printf("%s,lines:%d\n",argv[1],lines);
	
	close(dir);
}

测试结果:
lua-5.3.2 总行数 17010;
lua-5.1.5 总行数 13037;

看来都不多,不到两万行,哈哈,不过源码看的有点头大,尤其是在表结构构建和编译成字节码部分,再接再厉

你可能感兴趣的:(linux)