add function get_statfs_by_path
parent
aad48cc03d
commit
21366a4a2e
4
HISTORY
4
HISTORY
|
|
@ -1,4 +1,8 @@
|
|||
|
||||
Version 1.76 2024-10-31
|
||||
* get_mounted_filesystems act as program df
|
||||
* add function get_statfs_by_path
|
||||
|
||||
Version 1.75 2024-09-22
|
||||
* task init callback support extra argument
|
||||
* connection pool performance optimization
|
||||
|
|
|
|||
|
|
@ -334,6 +334,52 @@ int get_mounted_filesystems(struct fast_statfs *stats,
|
|||
#endif
|
||||
}
|
||||
|
||||
int get_statfs_by_path(const char *path, FastStatFS *statfs)
|
||||
{
|
||||
#define MAX_STATFS_COUNT 256
|
||||
int result;
|
||||
int count;
|
||||
int path_len;
|
||||
int mnt_len;
|
||||
int matched_len;
|
||||
char resolved_path[PATH_MAX];
|
||||
struct fast_statfs stats[MAX_STATFS_COUNT];
|
||||
struct fast_statfs *entry;
|
||||
struct fast_statfs *end;
|
||||
|
||||
if ((result=get_mounted_filesystems(stats, MAX_STATFS_COUNT,
|
||||
&count)) != 0)
|
||||
{
|
||||
return result;
|
||||
}
|
||||
|
||||
realpath(path, resolved_path);
|
||||
path_len = strlen(resolved_path);
|
||||
matched_len = 0;
|
||||
end = stats + count;
|
||||
for (entry=stats; entry<end; entry++)
|
||||
{
|
||||
mnt_len = strlen(entry->f_mntonname);
|
||||
if (mnt_len <= path_len && memcmp(resolved_path, entry->
|
||||
f_mntonname, mnt_len) == 0)
|
||||
{
|
||||
if ((mnt_len > 1 && mnt_len < path_len) &&
|
||||
*(resolved_path + mnt_len) != '/')
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if (mnt_len > matched_len)
|
||||
{
|
||||
matched_len = mnt_len;
|
||||
*statfs = *entry;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return (matched_len > 0 ? 0 : ENOENT);
|
||||
}
|
||||
|
||||
#if defined(OS_LINUX) || defined(OS_FREEBSD)
|
||||
|
||||
typedef struct fast_process_array {
|
||||
|
|
|
|||
|
|
@ -151,6 +151,15 @@ int get_boot_time(struct timeval *boot_time);
|
|||
int get_mounted_filesystems(struct fast_statfs *stats,
|
||||
const int size, int *count);
|
||||
|
||||
/** get statfs by path
|
||||
* parameters:
|
||||
* path: the path
|
||||
* statfs: return the statfs
|
||||
* return: error no, 0 success, != 0 fail
|
||||
*/
|
||||
int get_statfs_by_path(const char *path, FastStatFS *statfs);
|
||||
|
||||
|
||||
#if defined(OS_LINUX) || defined(OS_FREEBSD)
|
||||
/** get processes
|
||||
* parameters:
|
||||
|
|
|
|||
|
|
@ -64,6 +64,8 @@ int main(int argc, char *argv[])
|
|||
volatile bool continue_flag = true;
|
||||
FastIFConfig if_configs[32];
|
||||
struct fast_statfs stats[32];
|
||||
char *path;
|
||||
FastStatFS statfs;
|
||||
|
||||
start_time = get_current_time_ms();
|
||||
srand(time(NULL));
|
||||
|
|
@ -92,6 +94,13 @@ int main(int argc, char *argv[])
|
|||
stats[i].f_ffree);
|
||||
}
|
||||
|
||||
path = "/root";
|
||||
if (get_statfs_by_path(path, &statfs) == 0) {
|
||||
printf("\ninput path: %s, %s => %s, type: %s\n\n", path,
|
||||
statfs.f_mntfromname, statfs.f_mntonname,
|
||||
statfs.f_fstypename);
|
||||
}
|
||||
|
||||
#if defined(OS_LINUX) || defined(OS_FREEBSD)
|
||||
{
|
||||
FastProcessInfo *processes;
|
||||
|
|
@ -139,31 +148,6 @@ int main(int argc, char *argv[])
|
|||
|
||||
#endif
|
||||
|
||||
/*
|
||||
{
|
||||
int result;
|
||||
char *filename;
|
||||
IniContext iniContext;
|
||||
if (argc > 1) {
|
||||
filename = argv[1];
|
||||
} else {
|
||||
filename = "/etc/mc/worker.conf";
|
||||
}
|
||||
|
||||
|
||||
if ((result=iniLoadFromFile(filename, &iniContext)) != 0) {
|
||||
logError("file: "__FILE__", line: %d, "
|
||||
"load conf file \"%s\" fail, ret code: %d",
|
||||
__LINE__, filename, result);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
//iniPrintItems(&iniContext);
|
||||
iniFreeContext(&iniContext);
|
||||
}
|
||||
*/
|
||||
|
||||
sched_enable_delay_task();
|
||||
scheduleArray.entries = scheduleEntries;
|
||||
scheduleArray.count = 0;
|
||||
|
|
|
|||
Loading…
Reference in New Issue