Software / code / prosody
Annotate
util/paths.lua @ 12084:59557bc3c4b8 0.11
net.server_epoll: Process all queued events from epoll before timers
Should call timers less frequently when many sockets are waiting for
processing. May help under heavy load.
Requested by Ge0rG
Backport of 2bcd84123eba requested by Roi
| author | Kim Alvefur <zash@zash.se> |
|---|---|
| date | Thu, 21 Oct 2021 15:59:16 +0200 |
| parent | 6505:2dc8dbd0940e |
| child | 10197:91085371cfc5 |
| rev | line source |
|---|---|
|
6505
2dc8dbd0940e
util.paths: Add function for joining path segments
Kim Alvefur <zash@zash.se>
parents:
6164
diff
changeset
|
1 local t_concat = table.concat; |
|
2dc8dbd0940e
util.paths: Add function for joining path segments
Kim Alvefur <zash@zash.se>
parents:
6164
diff
changeset
|
2 |
|
6164
ef4024f6bc40
core.configmanager: Move path utility functions into util.paths
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
3 local path_sep = package.config:sub(1,1); |
|
ef4024f6bc40
core.configmanager: Move path utility functions into util.paths
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
4 |
|
ef4024f6bc40
core.configmanager: Move path utility functions into util.paths
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
5 local path_util = {} |
|
ef4024f6bc40
core.configmanager: Move path utility functions into util.paths
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
6 |
|
ef4024f6bc40
core.configmanager: Move path utility functions into util.paths
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
7 -- Helper function to resolve relative paths (needed by config) |
|
ef4024f6bc40
core.configmanager: Move path utility functions into util.paths
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
8 function path_util.resolve_relative_path(parent_path, path) |
|
ef4024f6bc40
core.configmanager: Move path utility functions into util.paths
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
9 if path then |
|
ef4024f6bc40
core.configmanager: Move path utility functions into util.paths
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
10 -- Some normalization |
|
ef4024f6bc40
core.configmanager: Move path utility functions into util.paths
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
11 parent_path = parent_path:gsub("%"..path_sep.."+$", ""); |
|
ef4024f6bc40
core.configmanager: Move path utility functions into util.paths
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
12 path = path:gsub("^%.%"..path_sep.."+", ""); |
|
ef4024f6bc40
core.configmanager: Move path utility functions into util.paths
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
13 |
|
ef4024f6bc40
core.configmanager: Move path utility functions into util.paths
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
14 local is_relative; |
|
ef4024f6bc40
core.configmanager: Move path utility functions into util.paths
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
15 if path_sep == "/" and path:sub(1,1) ~= "/" then |
|
ef4024f6bc40
core.configmanager: Move path utility functions into util.paths
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
16 is_relative = true; |
|
ef4024f6bc40
core.configmanager: Move path utility functions into util.paths
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
17 elseif path_sep == "\\" and (path:sub(1,1) ~= "/" and (path:sub(2,3) ~= ":\\" and path:sub(2,3) ~= ":/")) then |
|
ef4024f6bc40
core.configmanager: Move path utility functions into util.paths
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
18 is_relative = true; |
|
ef4024f6bc40
core.configmanager: Move path utility functions into util.paths
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
19 end |
|
ef4024f6bc40
core.configmanager: Move path utility functions into util.paths
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
20 if is_relative then |
|
ef4024f6bc40
core.configmanager: Move path utility functions into util.paths
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
21 return parent_path..path_sep..path; |
|
ef4024f6bc40
core.configmanager: Move path utility functions into util.paths
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
22 end |
|
ef4024f6bc40
core.configmanager: Move path utility functions into util.paths
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
23 end |
|
ef4024f6bc40
core.configmanager: Move path utility functions into util.paths
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
24 return path; |
|
ef4024f6bc40
core.configmanager: Move path utility functions into util.paths
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
25 end |
|
ef4024f6bc40
core.configmanager: Move path utility functions into util.paths
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
26 |
|
ef4024f6bc40
core.configmanager: Move path utility functions into util.paths
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
27 -- Helper function to convert a glob to a Lua pattern |
|
ef4024f6bc40
core.configmanager: Move path utility functions into util.paths
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
28 function path_util.glob_to_pattern(glob) |
|
ef4024f6bc40
core.configmanager: Move path utility functions into util.paths
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
29 return "^"..glob:gsub("[%p*?]", function (c) |
|
ef4024f6bc40
core.configmanager: Move path utility functions into util.paths
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
30 if c == "*" then |
|
ef4024f6bc40
core.configmanager: Move path utility functions into util.paths
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
31 return ".*"; |
|
ef4024f6bc40
core.configmanager: Move path utility functions into util.paths
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
32 elseif c == "?" then |
|
ef4024f6bc40
core.configmanager: Move path utility functions into util.paths
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
33 return "."; |
|
ef4024f6bc40
core.configmanager: Move path utility functions into util.paths
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
34 else |
|
ef4024f6bc40
core.configmanager: Move path utility functions into util.paths
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
35 return "%"..c; |
|
ef4024f6bc40
core.configmanager: Move path utility functions into util.paths
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
36 end |
|
ef4024f6bc40
core.configmanager: Move path utility functions into util.paths
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
37 end).."$"; |
|
ef4024f6bc40
core.configmanager: Move path utility functions into util.paths
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
38 end |
|
ef4024f6bc40
core.configmanager: Move path utility functions into util.paths
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
39 |
|
6505
2dc8dbd0940e
util.paths: Add function for joining path segments
Kim Alvefur <zash@zash.se>
parents:
6164
diff
changeset
|
40 function path_util.join(...) |
|
2dc8dbd0940e
util.paths: Add function for joining path segments
Kim Alvefur <zash@zash.se>
parents:
6164
diff
changeset
|
41 return t_concat({...}, path_sep); |
|
2dc8dbd0940e
util.paths: Add function for joining path segments
Kim Alvefur <zash@zash.se>
parents:
6164
diff
changeset
|
42 end |
|
2dc8dbd0940e
util.paths: Add function for joining path segments
Kim Alvefur <zash@zash.se>
parents:
6164
diff
changeset
|
43 |
|
6164
ef4024f6bc40
core.configmanager: Move path utility functions into util.paths
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
44 return path_util; |