Linux server2.hpierson.com 3.10.0-1160.105.1.el7.x86_64 #1 SMP Thu Dec 7 15:39:45 UTC 2023 x86_64
Apache
: 162.0.216.123 | : 216.73.216.152
28 Domain
?7.4.33
yvffpqmy
Terminal
AUTO ROOT
Adminer
Backdoor Destroyer
Linux Exploit
Lock Shell
Lock File
Create User
CREATE RDP
PHP Mailer
BACKCONNECT
UNLOCK SHELL
HASH IDENTIFIER
README
+ Create Folder
+ Create File
/
usr /
share /
systemtap /
tapset /
[ HOME SHELL ]
Name
Size
Permission
Action
?;
arm
[ DIR ]
drwxr-xr-x
?;
arm64
[ DIR ]
drwxr-xr-x
?;
bpf
[ DIR ]
drwxr-xr-x
?;
dyninst
[ DIR ]
drwxr-xr-x
?;
i386
[ DIR ]
drwxr-xr-x
?;
ia64
[ DIR ]
drwxr-xr-x
?;
linux
[ DIR ]
drwxr-xr-x
?;
mips
[ DIR ]
drwxr-xr-x
?;
powerpc
[ DIR ]
drwxr-xr-x
?;
s390
[ DIR ]
drwxr-xr-x
?;
x86_64
[ DIR ]
drwxr-xr-x
README
371
B
-rw-r--r--
ansi.stp
4.08
KB
-rw-r--r--
argv.stp
2.66
KB
-rw-r--r--
choose_defined.stpm
208
B
-rw-r--r--
container_of.stpm
235
B
-rw-r--r--
context.stp
4.95
KB
-rw-r--r--
errno.stp
8.9
KB
-rw-r--r--
indent-default.stp
59
B
-rw-r--r--
indent.stp
4.48
KB
-rw-r--r--
init.stp
269
B
-rw-r--r--
input.stp
263
B
-rw-r--r--
java.stp
1.31
KB
-rw-r--r--
libperl5.16.3-64.stp
799
B
-rw-r--r--
libpython2.7-64.stp
522
B
-rw-r--r--
logging.stp
4.91
KB
-rw-r--r--
macros.stpm
143
B
-rw-r--r--
null.stp
17
B
-rw-r--r--
offsetof.stpm
173
B
-rw-r--r--
oneshot.stp
38
B
-rw-r--r--
pn.stp
1.55
KB
-rw-r--r--
print_stats.stpm
1.68
KB
-rw-r--r--
private30.stpm
80
B
-rw-r--r--
prometheus.stp
68
B
-rw-r--r--
prometheus.stpm
4.97
KB
-rw-r--r--
python2.stp
30.29
KB
-rw-r--r--
python3.stp
29.69
KB
-rw-r--r--
queue_stats.stp
9.26
KB
-rw-r--r--
random.stp
432
B
-rw-r--r--
regex.stp
4.01
KB
-rw-r--r--
registers.stp
7.4
KB
-rw-r--r--
sizeof.stpm
212
B
-rw-r--r--
speculative.stp
1.71
KB
-rw-r--r--
stap_staticmarkers.stp
9.44
KB
-rw-r--r--
stopwatch.stp
2.99
KB
-rw-r--r--
string.stp
6.91
KB
-rw-r--r--
switchfile.stp
612
B
-rw-r--r--
system.stp
593
B
-rw-r--r--
timers.stp
924
B
-rw-r--r--
tokenize.stp
2.07
KB
-rw-r--r--
try_assign.stpm
768
B
-rw-r--r--
type_defined.stpm
363
B
-rw-r--r--
tzinfo.stp
930
B
-rw-r--r--
uconversions-guru.stp
5.38
KB
-rw-r--r--
uconversions.stp
34.19
KB
-rw-r--r--
Delete
Unzip
Zip
${this.title}
Close
Code Editor : regex.stp
// Regular expression subexpression tapset // Copyright (C) 2017 Serhei Makarov // Copyright (C) 2013 Red Hat, Inc. // // This file is part of systemtap, and is free software. You can // redistribute it and/or modify it under the terms of the GNU General // Public License (GPL); either version 2, or (at your option) any // later version. %{ #define STAP_NEED_CONTEXT_SUBEXPRESSION 1 %} /** * sfunction matched_str - Return the last matched string. * * Description: returns the string matched by the last successful * use of the =~ regexp matching operator. Returns an error if the * last use of =~ led to a failed match. */ function matched_str:string() { return matched(0) } /** * sfunction matched - Return a given matched subexpression. * * @n: index to the subexpression to return. 0 corresponds to the * entire regular expression. * * Description: returns the content of the n'th subexpression of the * last successful use of the =~ regex matching operator. Returns an * empty string if the n'th subexpression was not matched (e.g. due to * alternation). Throws an error if the last use of =~ was a failed * match, or if fewer than n subexpressions are present in the * original regexp. */ function matched:string(n:long) %{ /* pure */ /* unprivileged */ /* pragma:tagged_dfa */ int start_ix, end_ix; // indices into tag buffer int start, end, length; // actual coordinate values if (!CONTEXT->last_match.result) { snprintf(CONTEXT->error_buffer, sizeof(CONTEXT->error_buffer), "Attempted to get subexpression %lld from failed match", (long long) STAP_ARG_n); CONTEXT->last_error = CONTEXT->error_buffer; } start_ix = 2 * STAP_ARG_n, end_ix = start_ix + 1; if (end_ix >= CONTEXT->last_match.num_final_tags) { snprintf(CONTEXT->error_buffer, sizeof(CONTEXT->error_buffer), "Attempted to get nonexistent subexpression %lld", (long long) STAP_ARG_n); CONTEXT->last_error = CONTEXT->error_buffer; } start = CONTEXT->last_match.tag_vals[start_ix]; end = CONTEXT->last_match.tag_vals[end_ix]; // _stp_printf ("**DEBUG** Extracted subexpression #%lld:(%d,%d) from %d to %d\n", STAP_ARG_n, start_ix, end_ix, start, end); if (start < 0 || end < 0) { // If indices are negative, the group was not matched. Return empty string: start = end = 0; // snprintf(CONTEXT->error_buffer, sizeof(CONTEXT->error_buffer), // "Unknown coordinates for subexpression %lld", STAP_ARG_n); // CONTEXT->last_error = CONTEXT->error_buffer; } if (start > end) { // This should not happen. snprintf(CONTEXT->error_buffer, sizeof(CONTEXT->error_buffer), "BUG: inverted coordinates for subexpression %lld", (long long) STAP_ARG_n); CONTEXT->last_error = CONTEXT->error_buffer; } length = end - start; // TODOXXX assert (start <= strlen(matched_str)) ?? // XXX: Must add 1 to length to account for NUL byte in strlcpy(). strlcpy(STAP_RETVALUE, CONTEXT->last_match.matched_str + start, length + 1); %} /** * sfunction ngroups - Number of subexpressions in the last match. * * Description: returns the number of subexpressions from the * last successful use of the =~ regex matching operator. * * Note that this number includes subexpressions which are present in * the regex but did not match any string; for example, given the * regex "a|(b)", the subexpressions will count the group for (b) * regardless of whether it matched a string or not. Throws an error * if the last use of =~ was a failed match. */ function ngroups:long() %{ /* pure */ /* unprivileged */ /* pragma:tagged_dfa */ if (!CONTEXT->last_match.result) { snprintf(CONTEXT->error_buffer, sizeof(CONTEXT->error_buffer), "Attempted to get subexpression count from failed match"); CONTEXT->last_error = CONTEXT->error_buffer; } STAP_RETVALUE = CONTEXT->last_match.num_final_tags / 2; %} // XXX: perhaps implement matched_start, matched_end to get indices? // XXX: some kind of find-replace functionality? // XXX: some kind of splitting / multiple-match functionality?
Close