mirror of
https://github.com/DragonOS-Community/DragonOS.git
synced 2025-06-09 07:06:47 +00:00
Patch about auto gen version string (#114)
* new: about app中,显示当前构建的git commit sha1以及构建时间 * bugfix: 修复shell的exec命令对绝对路径的拼接错误问题
This commit is contained in:
parent
83a7aaa46b
commit
7a818da88a
5
.vscode/settings.json
vendored
5
.vscode/settings.json
vendored
@ -168,8 +168,9 @@
|
|||||||
"mmio.h": "c",
|
"mmio.h": "c",
|
||||||
"stdint-gcc.h": "c",
|
"stdint-gcc.h": "c",
|
||||||
"acpi.h": "c",
|
"acpi.h": "c",
|
||||||
"assert.h": "c"
|
"assert.h": "c",
|
||||||
},
|
"sys_version.h": "c"
|
||||||
|
},
|
||||||
"C_Cpp.errorSquiggles": "Enabled",
|
"C_Cpp.errorSquiggles": "Enabled",
|
||||||
"esbonio.sphinx.confDir": "",
|
"esbonio.sphinx.confDir": "",
|
||||||
"rust-analyzer.cargo.target": "x86_64-unknown-none",
|
"rust-analyzer.cargo.target": "x86_64-unknown-none",
|
||||||
|
1
user/apps/about/.gitignore
vendored
Normal file
1
user/apps/about/.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
sys_version.h
|
@ -1,7 +1,15 @@
|
|||||||
|
# 获得当前git提交的sha1,并截取前8位
|
||||||
|
GIT_COMMIT_SHA1=$(shell git log -n 1 | head -n 1 | cut -d ' ' -f 2 | cut -c1-8)
|
||||||
|
|
||||||
all: about.o
|
all: about.o
|
||||||
|
|
||||||
ld -b elf64-x86-64 -z muldefs -o $(tmp_output_dir)/about $(shell find . -name "*.o") $(shell find $(sys_libs_dir) -name "*.o") -T about.lds
|
ld -b elf64-x86-64 -z muldefs -o $(tmp_output_dir)/about $(shell find . -name "*.o") $(shell find $(sys_libs_dir) -name "*.o") -T about.lds
|
||||||
|
|
||||||
objcopy -I elf64-x86-64 -R ".eh_frame" -R ".comment" -O elf64-x86-64 $(tmp_output_dir)/about $(output_dir)/about.elf
|
objcopy -I elf64-x86-64 -R ".eh_frame" -R ".comment" -O elf64-x86-64 $(tmp_output_dir)/about $(output_dir)/about.elf
|
||||||
about.o: about.c
|
|
||||||
|
about.o: version_header about.c
|
||||||
$(CC) $(CFLAGS) -c about.c -o about.o
|
$(CC) $(CFLAGS) -c about.c -o about.o
|
||||||
|
|
||||||
|
# 生成版本头文件sys_version.h
|
||||||
|
version_header: about.c
|
||||||
|
@echo "#define DRAGONOS_GIT_COMMIT_SHA1 \"$(GIT_COMMIT_SHA1)\"" > sys_version.h
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
#include "sys_version.h" // 这是系统的版本头文件,在编译过程中自动生成
|
||||||
#include <libc/src/math.h>
|
#include <libc/src/math.h>
|
||||||
#include <libc/src/stdio.h>
|
#include <libc/src/stdio.h>
|
||||||
#include <libc/src/stdlib.h>
|
#include <libc/src/stdlib.h>
|
||||||
@ -18,8 +19,10 @@ void print_copyright()
|
|||||||
printf(" DragonOS - An opensource operating system.\n");
|
printf(" DragonOS - An opensource operating system.\n");
|
||||||
printf(" Copyright: fslongjin & DragonOS Community. 2022, All rights reserved.\n");
|
printf(" Copyright: fslongjin & DragonOS Community. 2022, All rights reserved.\n");
|
||||||
printf(" Version: ");
|
printf(" Version: ");
|
||||||
put_string("V0.1.1 - 20221127\n", COLOR_GREEN, COLOR_BLACK);
|
put_string("V0.1.2\n", COLOR_GREEN, COLOR_BLACK);
|
||||||
printf(" You can visit the project via:\n");
|
printf(" Git commit SHA1: %s\n", DRAGONOS_GIT_COMMIT_SHA1);
|
||||||
|
printf(" Build time: %s %s\n", __DATE__, __TIME__);
|
||||||
|
printf(" \nYou can visit the project via:\n");
|
||||||
printf("\n");
|
printf("\n");
|
||||||
put_string(" Official Website: https://DragonOS.org\n", COLOR_INDIGO, COLOR_BLACK);
|
put_string(" Official Website: https://DragonOS.org\n", COLOR_INDIGO, COLOR_BLACK);
|
||||||
put_string(" GitHub: https://github.com/fslongjin/DragonOS\n", COLOR_ORANGE, COLOR_BLACK);
|
put_string(" GitHub: https://github.com/fslongjin/DragonOS\n", COLOR_ORANGE, COLOR_BLACK);
|
||||||
@ -34,13 +37,9 @@ void print_copyright()
|
|||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
// printf("Hello World!\n");
|
|
||||||
print_ascii_logo();
|
print_ascii_logo();
|
||||||
|
|
||||||
print_copyright();
|
print_copyright();
|
||||||
// exit(0);
|
|
||||||
// while (1)
|
|
||||||
// ;
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
@ -39,26 +39,38 @@ const static int total_built_in_cmd_num = sizeof(shell_cmds) / sizeof(struct bui
|
|||||||
*/
|
*/
|
||||||
static char *get_target_filepath(const char *filename, int *result_path_len)
|
static char *get_target_filepath(const char *filename, int *result_path_len)
|
||||||
{
|
{
|
||||||
int cwd_len = strlen(shell_current_path);
|
char *file_path = NULL;
|
||||||
|
if (filename[0] != '/')
|
||||||
|
{
|
||||||
|
int cwd_len = strlen(shell_current_path);
|
||||||
|
|
||||||
// 计算文件完整路径的长度
|
// 计算文件完整路径的长度
|
||||||
*result_path_len = cwd_len + strlen(filename);
|
*result_path_len = cwd_len + strlen(filename);
|
||||||
|
|
||||||
char *file_path = (char *)malloc(*result_path_len + 2);
|
file_path = (char *)malloc(*result_path_len + 2);
|
||||||
|
|
||||||
memset(file_path, 0, *result_path_len + 2);
|
memset(file_path, 0, *result_path_len + 2);
|
||||||
|
|
||||||
strcpy(file_path, shell_current_path);
|
strncpy(file_path, shell_current_path, cwd_len);
|
||||||
|
|
||||||
// 在文件路径中加入斜杠
|
// 在文件路径中加入斜杠
|
||||||
if (cwd_len > 1)
|
if (cwd_len > 1)
|
||||||
file_path[cwd_len] = '/';
|
file_path[cwd_len] = '/';
|
||||||
|
|
||||||
// 拼接完整路径
|
// 拼接完整路径
|
||||||
if (filename[0] == '/')
|
|
||||||
strcat(file_path, filename + 1);
|
|
||||||
else
|
|
||||||
strcat(file_path, filename);
|
strcat(file_path, filename);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
*result_path_len = strlen(filename);
|
||||||
|
file_path = (char *)malloc(*result_path_len + 2);
|
||||||
|
|
||||||
|
memset(file_path, 0, *result_path_len + 2);
|
||||||
|
|
||||||
|
strncpy(file_path, filename, *result_path_len);
|
||||||
|
if(filename[(*result_path_len)-1]!='/')
|
||||||
|
file_path[*result_path_len] = '/';
|
||||||
|
}
|
||||||
|
|
||||||
return file_path;
|
return file_path;
|
||||||
}
|
}
|
||||||
@ -483,7 +495,8 @@ int shell_cmd_exec(int argc, char **argv)
|
|||||||
// 如果不指定后台运行,则等待退出
|
// 如果不指定后台运行,则等待退出
|
||||||
if (strcmp(argv[argc - 1], "&") != 0)
|
if (strcmp(argv[argc - 1], "&") != 0)
|
||||||
waitpid(pid, &retval, 0);
|
waitpid(pid, &retval, 0);
|
||||||
else{
|
else
|
||||||
|
{
|
||||||
// 输出子进程的pid
|
// 输出子进程的pid
|
||||||
printf("[1] %d\n", pid);
|
printf("[1] %d\n", pid);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user